도커 이미지 다루기 - Dockerfile

Junghun Park·2022년 8월 12일
0

Dev-Ops

목록 보기
6/9

ENV 키워드를 사용하면 이미지 빌드, 컨테이너 런타임에 환경변수를 선언하고 사용할 수 있다.
Build Argument 전달
ARG 키워드를 사용하면 변수를 선언하고 사용할 수 있다.

  • 도커파일에 ARG 키워드를 사용해 미리 변수 선언 방법
  • build 할 때 —build-arg 로 변수 전달
  • scope를 항상 유의해야 한다. arg가 선언되기 전에 값을 불러서 사용할 수 없다. 그렇기 때문에 입력한 값이 아닌 기본값을 사용하게 된다.
  • ENV와 ARG가 같은 이름을 가지고 있는 경우에는 항상 ENV가 ARG를 덮어쓰게 된다.

FROM 지시어는 베이스가 되는 이미지를 지정

  • FROM node:16

LABEL 지시어는 이미지의 메타데이터, 옵셔널 값이기 때문에 없어도 괜찮다.

WORKDIR 지시어는 다음에 오는 경로를 워킹 디렉토리로 만들어 줌

  • WORKDIR /app

COPY 지시어는 src(host)에서 dest(img) 이미지상의 경로로 복사함

  • COPY package*.json / -> 호스트의 package로 시작하는 json 파일을 이미지의 /app 경로에 복사함

RUN 지시어는 도커 이미지 상에서 해당 명령어를 실행함

  • RUN npm install

  • COPY . . 현재 디렉토리상의 모든 파일을 호스트의 기본 경로에 복사함

EXPOSE 8080 이 지시어는 이 도커 이미지가 8080포트를 사용하는 것을 명시적으로 표현한다. 실제로 포트를 publish 할 때는 -p 옵션을 사용해야 한다.

CMD 지시어는 해당 이미지를 가지고 컨테이너를 실행할 때 수행할 명령어를 지정

  • CMD [“node”, “server.js”] 이렇게 배열로 받을 수도 있지만 “node server.js” 이런식으로 하나의 문자열로도 전달 가능

ENTRYPOINT 지시어 사용 가능 커맨드(CMD)에 앞서 시작 프로그램을 지정할 수 있음

  • ENTRYPOINT [“executable”, “param1”, “param2”] 형태로 배열 형식으로 전달 가능
  • ENTRYPOINT command param1 param2 형태로 shell 형식으로 전달가능
  • 배열 형식 전달이 선호됨

ADD 지시어는 COPY 명령어와 유사한 역할을 함

  • COPY와 다르게 url을 받아올 수 있음 하지만 url을 사용하면 소스가 변경됐는지 여부를 확인할 수 없기 때문에 COPY 지시어를 통일적으로 사용하는 것을 권고함

USER 지시어를 통해 컨테이너가 사용하게될 사용자와 그룹을 지정할 수 있음

0개의 댓글