많이 쓰이는 Dockerfile 명령어 7가지

민겸·2023년 1월 25일
0

Deploy

목록 보기
1/1
post-thumbnail

1. FROM

FROM <image>:<tag>

ex) FROM node:12.18.4

FROM (이미지)
본인이 만드려고 하는 도커 이미지의 기반이 되는 공식 이미지.

2. RUN

RUN ["<command>", "<parameter>", "<parameter>", ..]

ex) RUN ["npm", "install", "-g", "http-server"]

RUN <전체커맨드>

ex) RUN npm install -g http-server

RUN (명령어)
이미지를 생성하는 과정에서 실행할 명령어.
(위에서 FROM으로 node.js를 불러왔으니, npm 명령어가 먹힘)

3. WORKDIR

WORKDIR <PATH>

ex) WORKDIR /home/node/app

WORKDIR (경로)
이미지 내에서 명령어를 실행할 위치를 설정. 터미널의 cd 명령어와 같다고 보면 됨.

4. ENTRYPOINT

ENTRYPOINT <전체커맨드>

ex) ENTRYPOINT npm start

ENTRYPOINT ["<command>", "<parameter>", "<parameter>", ..]

ex) ENTRYPOINT ["npm", "start"]

ENTRYPOINT (명령어)
이미지를 컨테이너로 실행 시, 항상 실행되는 고정 명령어 설정.
ENTRYPOINT 명령문은 도커 이미지를 하나의 실행 파일처럼 사용할 때 유용함.
컨테이너 실행 시, ENTRYPOINT 커맨드로 실행된 프로세스가 죽을 때, 컨테이너도 따라서 종료되기 때문.

5. CMD

CMD <전체커맨드>

ex) CMD yarn start

CMD ["<command>", "<parameter>", "<parameter>", ..]

ex) CMD ["yarn", "start"]

CMD (명령어)
컨테이너 실행 시 기본값으로 실행할 명령어.
단 한 번만 사용 가능하며, 여러 번 사용되었을 경우엔 마지막 CMD만 실행.
docker run (이미지) (커맨드)와 같이 커맨드를 포함하여 실행 시, 기본값으로 실행되는 CMD 라인 부분은 무시됨.

다음과 같이, ENTRYPOINT 명령어와 같이 쓰이기도 함.

ENTRYPOINT <command>
CMD ["<parameter>", "<parameter>", ..]
ex) ENTRYPOINT ["node"]
	CMD ["index.js"]

6. COPY

COPY <src>... <dest>

- package.json 파일만 복사
ex) COPY package.json package.json

- 이미지를 빌드한 디렉토리의 모든 파일을 컨테이너의 app/ 디렉토리로 복사
ex) WORKDIR app/
	COPY . .
    첫 번째 .은 모든 파일을 의미
    두 번째 .은 현재 WORKDIR을 의미

COPY (복사할 파일) (복사한 파일을 이미지에 복사할 위치)
호스트 컴퓨터에 있는 디렉토리나 파일을 도커 이미지의 파일 시스템으로 복사.
절대 경로, 상대 경로 둘 다 사용 가능. 단, 상대 경로 사용 시, 현재 WOKRDIR 어딘 지 파악해야함.

7. ADD

ADD <src>... <dest>

ex) ADD text.txt /home
	/home/text.txt 생성

ADD (복사할 파일) (복사한 파일을 이미지에 복사할 위치)
위의 COPY 명령어와 기본적으로 동일하나, 두 가지 추가적인 기능이 있음.

  • Remote URL
    원격의 외부 파일을 URL 지정으로 복사할 수 있음.
    ex) ADD http://test.com/hello.txt /home/hello/
  • Auto-Extraction
    .tar 또는 .tar.gz와 같은 압축 파일을 자동 압축 해제하여 복사할 수 있음.
    ex) ADD hello.tar.gz /
profile
기술부채상환중...

0개의 댓글