1 분 소요


본 내용은 인프런의 데브위키님 강의 “개발자를 위한 쉬운 도커” 내용을 바탕으로 정리한 내용입니다.


도커파일(Dockerfile) 지시어

FORM, COPY, RUN, CMD

FROM 이미지명

  • 베이스 이미지를 지정

COPY 빌드컨텍스트경로 레이어경로(새로운 레이어 추가)

  • 빌드 컨텍스트의 파일을 레이어에 복사

RUN 명령어 (새로운 레이어 추가)

  • 명령어 실행

CMD [“명령어”]

  • 컨테이너 실행 시 명령어 지정
FROM node:14

COPY ./ /

RUN npm install

CMD ["npm", "start"]

Dockerfile 빌드 실행 도커파일명이 Dockerfile이 아닌 경우 -f 옵션으로 지정해줘야 한다.

명령어 : docker build -f 도커파일명 -t 이미지명 Dockerfile경로

$ docker build -f Dockerfile-Custom -t nginx .

WORKDIR, USER, EXPOSE

WORKDIR 폴더명 (새로운 레이어 추가)

  • 컨테이너 내의 작업 디렉토리를 지정

USER 유저명 (새로운 레이어 추가)

  • 명령을 실행할 사용자 변경

EXPOSE 포트번호

  • 컨테이너가 사용할 포트를 명시. 실제 컨테이너가 사용하는 포트를 지정하는 것이 아님
FROM node:14

WORKDIR /app

COPY ./ /

RUN npm install

USER node

EXPOSE 3000

CMD ["npm", "start"]

ARG, ENV

ARG 변수명 변수값

  • 이미지 빌드 시점의 환경 변수 설정한다.
  • 빌드 과정에서만 사용되며 어플리케이션 내부에서 사용되는 환경 변수가 아니다.
  • docker build --build-arg 변수명=변수값 으로 덮어쓰기가 가능하다.

ENV 변수명 변수값 (새로운 레이어 추가)

  • 이미지 빌드 및 컨테이너 실행 시점의 환경 변수를 설정할 때 사용된다.
  • 실제 어플리케이션 내부에서 사용해야 하는 경우 사용된다.
  • ENV에 설정된 환경 변수 값은 이미지 빌드 후 이미지 내에 저장되어 컨테이너 실행 시 사용된다.
  • 컨테이너 실행 시 docker run -e 변수명=변수값 을 사용하면 이미지 내에 저장된 환경 변수를 덮어쓴다.
FROM node:14

WORKDIR /app

COPY ./ /

RUN npm install

# 파일 안에서만 사용된다.
ARG COLOR=red

# 실제 어플리케이션 안에 COLOLR로 지정된 환경 변수에 맵핑된다.
# ${COLOR}는 위 ARG에 선언한 COLOR 값이 맵핑된다.
ENV COLOR=${COLOR}

USER node

EXPOSE 3000

CMD ["npm", "start"]

Dockerfile 빌드 실행

  • --build-arg 에 정의된 COLOR=green가 Dockerfile 내의 ARG COLOR=red 의 COLOR값에 덮어쓰기 된다.
  • -e 옵션으로 지정한 키=값 이 컨테이너 실행 시 내부로 전달된다.
# 이미지 빌드
$ docker build --build-arg COLOR=green --name buildapp .

# 컨테이너 실행
$ docker run -d -p 80:80 -e COLOR=green --name buildapp .

ENTRYPOINT, CMD

ENTRYPOINT [“명령어”]

  • 고정된 명령어를 지정

CMD [“명령어”]

  • 컨테이너 실행 시 실행 명령어 지정
FROM node:14

WORKDIR /app

COPY ./ /

RUN npm install

ARG COLOR=red
ENV COLOR=${COLOR}

USER node

EXPOSE 3000

ENTRYPOINT ["npm"]

CMD ["start"]

댓글남기기