강의를 듣다보면 Dockerfile이 나온다.
Dockerfile에 들어가는 내용이 뭔지 잘 몰라 같이 정리해둔다.
컨테이너에 올릴 이미지를 커스텀 해서 빌드하려면 Dockerfile이 필요하다.
도커에 의해 식별되는 특별한 이름이다.
Dockerfile에는 자체 이미지를 빌드할 때 실행하려는 도커에 대한 명령들이 포함된다.
일반적으로 FROM 명령어로 시작하고, 모두 대문자로 쓴다.
# 베이스 이미지
FROM node
# 작업 디렉토리 설정
WORKDIR /app
# build 명령 중간에 호스트의 파일/폴더를 이미지에 가져오는 것
# 도커에게 모든 후속 명령이 /app 내부에서 실행될 것임을 알린다.
COPY . /app
# 이미지가 올라갔을 때 실행되는 명령어
RUN npm install
# 도커 빌드 후 생성된 이미지에서 열어줄 포트
# 호스트와 컨테이너의 포트 매핑시 이용
# 컨테이너 생성 시 -p 옵션에서 EXPOSE 값을 적어야한다.
EXPOSE 80
# 컨테이너를 생성, 실행할 때 사용할 명령어
CMD ["node", "server.js"]
# ^컨테이터 내부에 있는 node 명령을 사용하여 server.js파일을 실행하도록 지시
COPY . .
를 쓴다면COPY . .
보다는 사용자가 선택한 서브 폴더를 사용하는 것이 좋으므로 COPY . /app
라고 지정한다../
는 도커 컨테이너의 현재 작업 디렉토리를 의미/app
로 변경했기에 RUN뿐만 아니라 COPY도 이 작업 디렉토리를 기준으로 실행한다./app
: 절대 경로. 이렇게 하면 파일을 복사할 위치를 명확히 알 수 있다.CMD ["node", "server.js"]
: 배열을 전달. 도커에게 이미지를 기반으로 컨테이너가 생성될 때 마다 그 컨테이너 내부에 있는 node
명령을 사용하여 server.js
파일을 실행하도록 지시.