<aside> ℹ️ Dokerfile은 이미지를 빌드하는데 필요한 모든 명령이 순서대로 포함된 텍스트 파일입니다.
</aside>
키워드 | 설명 | 예시 |
---|---|---|
FROM |
기본 이미지 설정 | **FROM** alpine:latest |
SHELL |
기본 쉘 지정 | **SHELL** ["/bin/sh", "-c"] |
WORKDIR |
작업 디렉토리 변경 (default: / ) |
**WORKDIR** /app |
USER |
실행 사용자 또는 그룹 설정 (default: root ) |
**USER** minjungk:42seoul |
RUN |
이미지 빌드 시 실행할 명령어 | |
(이미지 레이어 생성) | **RUN** echo -n hello |
|
**RUN** ["echo", "-n", "hello"] |
||
ADD |
로컬 파일 또는 URL을 컨테이너 내로 압축을 풀어서 복사 | **ADD** <https://example.com/file.tar.gz> /tmp/ |
COPY |
로컬 파일을 컨테이너 내로 복사 | **COPY** app.jar /app/ |
ENV |
Runtime 환경 변수 설정 | **ENV** DB_HOST=localhost |
ARG |
Build-time 환경 변수 설정 | **ARG** APP_VERSION=1.0 |
CMD |
컨테이너 시작 시 실행할 명령어 설정 | **CMD** ["java", "-jar", "app.jar"] |
**ENTRYPOINT ** |
컨테이너 시작 시 실행할 주요 명령어 설정 | **ENTRYPOINT** ["nginx", "-g", "daemon off;"] |
ONBUILD |
상속 이미지에서 실행할 기본 명령어 지정 | **ONBUILD** <INSTRUCTION> |
**ONBUILD** ADD web.tar /var/www/html |
||
EXPOSE |
컨테이너가 사용하는 포트 노출 예정 |
docker run -P
호출 시에만 외부 랜덤 포트와 매핑됨 | **EXPOSE** 80
|
| LABEL
| 이미지에 메타 데이터 레이블 추가 | **LABEL** version="1.0" description="My App"
|
| VOLUME
| 볼륨을 마운트하거나 컨테이너에 연결 | **VOLUME** **[**"/data"**]**
|
| STOPSIGNAL
| 컨테이너 종료 신호 (default: SIGTERM
) | **STOPSIGNAL** SIGTERM
|
| HEALTHCHECK
| 컨테이너 상태 확인0
(정상) 1
(비정상) 2
(예약된 코드)--interval
: 헬스체크 간격 (default: 30s)
--timeout
: 타임아웃 시간 (default: 30s)
--retries
: 타임아웃 횟수 (default: 3) | **HEALTHCHECK** NONE
**HEALTHCHECK** --timeout=10s CMD curl -f <http://localhost> || exit 1
|