Back-end/Docker

[Docker] Dockerfile 만들기

moguogu 2021. 7. 28. 19:59

Docker 기초

  1. 도커 파일 작성하기
    • 주의 할 점: Dockerfile이라는 이름으로 파일을 생성해야 함
  2. 도커 파일의 명령어 파악하기
    • FROM: 베이스 이미지 명시, 이미지 생성시 기반이 되는 이미지 레이어 ex) <이미지이름>: <태그>
      • ex) FROM alpine
    • RUN: 도커 이미지가 생성되기 전에 수행할 쉘 명령어
      • ex) RUN command
    • CMD: 컨테이너 시작시 실행 될 명령어를 명시해 준다-> 도커파일 내에 1번만 사용 가능
      • ex) CMD ["echo", "hello"]

  1. 본격적인 예시 코드
FROM node:10
#경로지정
WORKDIR /usr/src/app
#종속성 다운로드
COPY package.json ./ 
RUN npm install
#경로 안에 모든 파일 컨테이너 안으로 복사 
#소스만 변경 하는 부분을 반영해 주기 위한 부분 (종속성은 다시 다운 받지 않음)
COPY ./ ./ 
CMD ["node","server.js"] 

Nodejs로 간단한 어플리케이션을 만들고 빌드 하는 코드이다.


  1. 도커 빌드를 위한 명령어
    docker build ./  #도커파일 빌드
    docker build -t test/nodejs ./  #도커 파일 이름설정 후 빌드
    docker run -p 5000:8080 test/nodejs:latest  #빌드 후 run을 하기 위함 -> 5000은 웹 포트, 8080은 개발 환경 포트

도커를 빌드 후, run 을 하는 경우 nodejs의 port를 8080으로 연결해 두었다.
이것을 내 컴퓨터에서 5000번에서 열기 위한 명령어이다.


  1. nodejs 코드

server.js

const express=require('express');

const PORT=8080;

//app

const app=express();
app.get('/',(req,res)=>{
    res.send("hello world");
})

app.listen(PORT);
console.log("sever is running");

package.json

{
  "name": "docker-node",
  "version": "1.0.0",
  "description": "",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "dependencies": {
    "express":"^4.17.1"
  },
  "author": "",
  "license": "ISC"
}