2021. 8. 22. 14:02ㆍDocker
요약
docker 컨테이너 이미지 빌드를 하기 위한 파일
사용하는 명령어
- FROM
- WORKDIR
- COPY
- RUN
- ENV
- EXPOSE
- CMD
명령어 설명
FROM : 이미지를 생성 할 때 기반으로 하는 베이스 이미지이다 ex) 운영체제
WORKDIR : 생성한 docker 컨테이너에서 작업 할 디텍토리를 지정한다.
COPY : 로컬 파일을 컨테이너로 복사한다. ex) COPY [로컬, docker 컨테이너 내부]
RUN : 컨테이너 내부에서 명령을 실행한다. ex) npm i, yarn
* RUN 명령어를 여러번 사용이 가능하다.
ENV : 환경 변수 설정
ENV HOST x.x.x.x : x.x.x.x의 부터 네트워크 수신을 받겠다고 설정 ex) 모든 수신을 받을 때 0.0.0.0
EXPOSE : 컨테이너 런타임 중 특정 포트로 외부에 노출 할 때 사용
CMD : 컨테이너를 들어간 애플리케이션을 실행 할 때 사용하는 명령어 ex) ["yarn", "start"]
* RUN 명령어와 다르게 한번 만 사용한다.
작성
FROM node:18-alpine
WORKDIR /app
COPY ["package.json", "yarn-lock.json", "./"]
RUN yarn
COPY . .
ENV HOST 0.0.0.0
EXPOSE 3000
CMD ["yarn", "start"]
설명
FROM node:18-alpine => NODE 18이 있는 작은 리눅스 이미지를 사용한다.
WORKDIR => 생성한 docker 컨테이너에서 작업 할 디텍토리를 지정한다.
COPY ["package.json", "yarn-lock.json", "./"] => package.json과 yarn-lock.json을 먼저 COPY 한다.
RUN yarn => 패키지 설치
COPY . . => 소스코드를 COPY 한다
ENV HOST 0.0.0.0 => 모든 수신을 받는다.
EXPOSE 3000 => 3000 포트로 외부에 노출한다.
CMD ["yarn", "start"] => 애플리케이션 실행 명령어
COPY가 두 번 작성된 이유
패키지 설치 후에 도커 이미지 레이어 캐시로 인해 package.json의 변경 점이 없다면 이전에 만든 레이어를 그대로 사용해서 빌드시간이 줄어든다.
* 해당 방법을 사용 할 때 .dockerignore 파일이 존재해야한다.
.dockerignore
불필요한 파일을 제외 하여 이미지 효휼성을 개선
ex) node_modules
'Docker' 카테고리의 다른 글
docker-compose 사용 방법 (1) | 2023.12.31 |
---|---|
Docker build 시 bcrypt 에러 해결 방법 Error: Error loading shared library... (2) | 2023.10.29 |
Docker 볼륨 마운트 (0) | 2020.11.18 |