728x90
# 사용할 이미지
FROM node
# 컨테이너에서 돌아갈 작업 디렉터리
WORKDIR /app
# 로컬 .의 모든 파일을 컨테이너의 /app에 복사
# 작업 디렉터리를 /app으로 지정했으므로 ./라고 써도 같은 의미
COPY . /app
# 이미지 설치 후 실행할 명령(/app 아래에서 실행)
RUN npm install
# 컨테이너의 80포트를 로컬에 노출
EXPOSE 80
# 컨테이너 시작 시 실행될 명령
CMD ["node", "server.js"]
작업 디렉터리로 /app을 지정했음에도 COPY 에서 ./가 아닌 /app으로 작업할 디렉터리를 명시하는 이유
파일을 복사할 위치를 정확히 알 수 있고 현재 작업 디렉토리가 무엇인지 보기 위해 노력할 필요가 없다.
CMD와 RUN의 차이점
CMD는 이미지가 생성될 때 실행되지 않고 이미지 기반의 컨테이너가 시작될 때 실행된다.
EXPOSE 80은 선택 사항이고 docker run 명령을 할 때 -p 옵션으로 실제 포트를 노출시켜야 한다. 하지만 Dockerfile에 문서화시키는 것이 좋다.
docker start 명령으로 컨테이너 시작 시 detached(백그라운드) 모드 실행이 기본
docker run 명령으로 컨테이너 시작 시 attached(포어그라운드) 모드 실행이 기본
728x90