1) Dockerfile이란?
- Dockerfile은 애플리케이션을 패키징하기 위한 간단한 스크립트다.
Dockerfile은 일련의 인스트럭션으로 구성돼 있는데, 인스트럭션을 실행한 결과로 도커 이미지가 만들어진다.
여타 스크립트 언어와 마찬가지로 Dockerfile 문법도 매우 유연하다.
자주 쓰이는 작업은 별도의 명령이 마련돼 있으며,
원하는 작업을 직접 작성할 수 있고, 표준 셸 문법도 사용 가능하다.
- 다음은 web-ping 애플리케이션을 패키징하기 위한
전체 Dockerfile 스크립트다.
FROM diamol/node
ENV TARGET="blog.sixeyed.com"
ENV METHOD="HEAD"
ENV INTERVAL="3000"
WORKDIR /web-ping
COPY app.js
CMD ["node", "/web-ping/app.js"]
- 이 스크립트에 나온 인스트럭션은 FROM, ENV, WORKDIR, COPY, CMD다.
대문자로 작성돼 있으나 소문자를 사용해도 무방하다.
인스트럭션을 하나씩 차례로 읽어보자.
(1) FROM
- 모든 이미지는 다른 이미지로부터 출발한다.
이 이미지는 diamol/node 이미지를 시작점으로 지정했다.
diamol/node 이미지에는 web-ping 애플리케이션을 실행하는데 필요한 런타임인
Node.js가 설치돼 있다.
(2) ENV
- 환경변수 값을 지정하기 위한 인스트럭션이다.
값을 지정하기 위해 [key]="[value]" 형식을 따른다.
이 스크립트에는 ENV 인스트럭션이 세 번 사용돼 세 개의 환경 변수를 설정했다.
(3) WORKDIR
- 컨테이너 이미지 파일 시스템에 디렉터리를 만들고,
해당 디렉터리를 작업 디렉터리로 지정하는 인스트럭션이다.
리눅스와 윈도 컨테이너 모두 구분자로 슬래시를 사용한다.
그러므로 스크립트에 나온 인스트럭션은 리눅스 컨테이너에서는 /web-ping 디렉터리를 만들고,
윈도 컨테이너에서는 C:\web-ping 디렉터리를 만든다.
(4) COPY
- 로컬 파일 시스템의 파일 혹은 디렉터리를 컨테이너 이미지로 복사하는 인스트럭션이다.
[원본 경로] [복사 경로] 형식으로 지정하면 된다.
이 스크립트에서는 로컬 파일 시스템에 있는 app.js 파일을 이미지의 작업 디렉터리로 복사했다.
(5) CMD
- 도커가 이미지로부터 컨테이너를 실행했을 때, 실행할 명령을 지정하는 인스트럭션이다.
여기서는 Node.js 런타임이 애플리케이션을 시작하도록 app.js를 지정했다.
- 이 Dockerfile의 내용은 이게 전부다.
이들 다섯 가지 인스트럭션만으로도 어지간한 애플리케이션을 도커로 패키징할 수 있으며,
지금 살펴본 스크립트가 좋은 예제가 돼줄 것이다.
'도커 교과서' 카테고리의 다른 글
[도커 교과서] 도커 컴포즈 파일의 구조 (0) | 2025.01.07 |
---|