vlwkaos' digital garden

Dockerfile

도커파일의 각 커맨드는 캐시가 가능한 Layer 를 생성한다. 각 Layer는 변경점이 없다면 다시 실행되지 않는다.

예를 들어 노드 프로젝트의 경우 보통 소스코드를 받고 의존성 모듈을 설치하지만, 도커 커맨드 단계가 캐싱된다는 사실을 이용하려면 의존성 모듈 설치를 먼저해야한다.

# 설치 환경
FROM node:12

# 사용할 경로
WORKDIR /app

# 복사
COPY package*.json ./

# 의존성 설치
RUN npm install

# 소스코드 내용 복사 /node_modules는 .dockerignore에 추가하여 복사되지 않도록 한다.
COPY . .

# 환경 변수 설정
ENV PORT=8080

# 노출시킬 포트
EXPOSE 8080

# 서비스 시작용 커맨드
CMD ["npm", "start"]

사용 팁

Image

아래와 같은 CLI 커맨드를 입력하여 도커 이미지를 만들 수 있다.

  • docker build --build-arg PHASE=abc -t proj:1.0 .
  • docker build -t {TAG} -f ./path/to/Dockerfile.ext {build context}
    • t : 태그
    • f : 파일 경로
    • l : 라벨, 라벨 지정하면
    • 마지막 argbuild context 이다. Dockerfile 실행시 루트가 되는 경로를 지정한다. 예를 들어 프로젝트 루트에서 docker build. 를 넘기면 프로젝트 루트가 기본 경로가 된다.

이렇게 빌드된 이미지는 다른 이미지를 만드는데 사용할 수도 있고, container를 실행하는데 이용할 수도 있다.

Container에서 실행하려면 docker image를 [[Container Registry]]가있는 서버에 push해야한다.

Referred in

Dockerfile