Dockerfile
- File 이름을 Dockerfile로 명명하면 자동으로 도커파일로 인식
- VScode Extension 에서 Docker을 설치
- 자체 이미지를 빌드할 때 실행하려는 도커에 대한 명령 포함, 자체 이미지에 대한 설정 명령 포함
FROM <base_image_name> # 다른 이미지를 가져와서 베이스로 사용 , local 혹은 docker hub
WORKDIR /app
COPY . /app # 어떤 파일이 이미지에 들어가야하는지
COPY <외부> <내부>
RUN npm install
EXPOSE <port> # 단, docker 실행 시 -p <port>:<port> 지정해주지 않으면 소용없다,,,, 그냥 알려주는 용도
CMD ["node", "server.js"]
도커 허브 이미지를 기반으로 컨테이너를 처음 실행했을 때 이미지가 다운로드 및 캐시
실제로 로컬에 없는 이미지를 기반으로 컨테이너를 실행한 순간, 도커 허브에서 다운 받은 이미지가 로컬 머신에도 존재하게 됨
WORKDIR <폴더>
- 모든 후속 명령이 해당 폴더 내부에서 실행될 것
COPY <컨테이너, 이미지 외부> <내부>
- <외부> 에
.
일 경우 Dockerfile이 포함되어있는 동일한 폴더임을 가르킴, ( 단, Dockerfile은 제외 ) - <내부> : COPY한 파일을 저장해야하는 이미지의 내부 경로 , root를 이용하지 않고 서브 폴더를 이용하는게 베스트 ( /app과 같이 아무 이름 작명해도 됨, 없을 경우 폴더 생성해줌 )
ex1) COPY . .
- 이 프로젝트의 모든 폴더, 하위 폴더 및 파일을 COPY => root
ex2) COPY . /app
- Dockerfile과 동일 및 하위 폴더에 위치하는 파일을 컨테이너, 이미지 내부의 /app 폴더로 COPY
ex3) COPY . ./
- WORKDIR ( 현재 작업 디렉토리 ) 에 COPY
- 위의 코드 상에선 /app 폴더로 파일을 COPY 하라는 것과 같음
- 단, 이렇게 생략하기 보다 명확하게
COPY . /app
로 나타내는 것이 추후 가독성을 높일 수 있음
RUN <명령어>
- image에서 명령을 RUN, default로 컨테이너 및 이미지의 작업 디렉토리에서 실행
- default작업 디렉토리는 컨테이너의 root.
- 그러나 컨테이너의 /app 폴더에 package를 심었기 때문에 WORKDIR을 사용하여 작업 디렉토리를 설정(변경)해주어야한다.
- 이미지가 빌드될때마다 실행
CMD []
- 이미지가 생성될때 실행되지 않고 컨테이너가 시작될 때 실행
- " " 공백을 기준으로 리스트 안을 분할
ex) 이미지를 기반으로 컨테이너를 시작하는 경우에만 서버 시작
EXPOSE <port>
- 로컬 시스템에 특정 포트 노출
'Docker' 카테고리의 다른 글
[Docker] 이미지 캐시, 레이어 (image layer) (0) | 2022.05.12 |
---|---|
[Docker] image 생성 및 컨테이너 실행 (0) | 2022.05.02 |
[Docker] image, container (0) | 2022.05.01 |
[Docker] 도커, 컨테이너, Virtual Machine과 차이 (0) | 2022.04.24 |