💡 핵심 요약 (Executive Summary)
본 가이드는 Dockerfile syntax 핵심 가이드 및 실전 아키텍처의 핵심 개념, 실전 구성 명령어 및 아키텍처 베스트 프랙티스를 다룹니다. 클라우드 네이티브 및 인프라 엔지니어링 실무에 즉시 활용 가능하도록 체계적으로 정리했습니다.
📑 Table of Contents
Samples
Syntax
1. 기본 명령어
FROM
- 이미지를 기반으로 새 이미지를 생성.
- 형식:
FROM <이미지>:<태그> - 예:
FROM node:16
RUN
- Docker 이미지 생성 중 실행할 명령어를 지정.
- 쉘 형식:
RUN <명령어> - exec 형식:
RUN ["실행파일", "매개변수1", "매개변수2"] - 예:
docker
RUN apt-get update && apt-get install -y curl
CMD
- 컨테이너 실행 시 기본적으로 실행될 명령어를 지정.
- 형식:
- 쉘 형식:
CMD <명령어> - exec 형식:
CMD ["실행파일", "매개변수1", "매개변수2"] - 예:
docker
CMD ["node", "app.js"]
ENTRYPOINT
- 컨테이너의 실행 시작점을 설정.
CMD와 비슷하지만 고정 실행을 더 강조.- 형식:
ENTRYPOINT ["실행파일", "매개변수1"] - 예:
docker
ENTRYPOINT ["python3", "script.py"]
COPY
- 파일 또는 디렉토리를 컨테이너로 복사.
- 형식:
COPY <호스트 경로> <컨테이너 경로> - 예:
docker
COPY app.js /usr/src/app/
ADD
- 파일 복사 + URL 다운로드 및 압축 해제 가능.
- 형식:
ADD <호스트 경로 또는 URL> <컨테이너 경로> - 예:
docker
ADD archive.tar.gz /usr/src/app/
WORKDIR
- 이후 명령어가 실행될 작업 디렉토리를 설정.
- 형식:
WORKDIR <경로> - 예:
docker
WORKDIR /usr/src/app
EXPOSE
- 컨테이너가 수신 대기할 포트를 지정.
- 형식:
EXPOSE <포트> - 예:
docker
EXPOSE 3000
ENV
- 환경 변수를 설정.
- 형식:
ENV <키> <값> - 예:
docker
ENV NODE_ENV production
ARG
- Dockerfile 빌드 시 전달받을 매개변수를 지정.
- 형식:
ARG <키>=<기본값> - 예:
docker
ARG APP_VERSION=1.0
VOLUME
- 컨테이너와 호스트 간 공유할 볼륨을 설정.
- 형식:
VOLUME ["<경로>"] - 예:
docker
VOLUME ["/data"]
USER
- 컨테이너 실행 사용자 계정을 설정.
- 형식:
USER <사용자>[:그룹] - 예:
docker
USER 1001
LABEL
- 메타데이터를 설정.
- 형식:
LABEL <키>=<값> - 예:
docker
LABEL maintainer="[email protected]"
2. 고급 문법
ONBUILD
- 부모 이미지에서 트리거되는 명령어를 설정.
- 형식:
ONBUILD <명령어> - 예:
docker
ONBUILD RUN echo "Triggered from base image!"
HEALTHCHECK
- 컨테이너 상태를 확인.
- 형식:
HEALTHCHECK [옵션] CMD <명령어> - 예:
docker
HEALTHCHECK --interval=30s --timeout=10s \
CMD curl -f http://localhost/health || exit 1
3. 주석
#로 시작하며 Dockerfile의 주석을 작성.- 예:
docker
# 이 Dockerfile은 Node.js 애플리케이션을 위한 것입니다.
4. 명령어의 실행 순서
- Dockerfile은 위에서 아래로 순차적으로 실행됩니다.
- 명령어의 순서에 따라 캐싱이 적용되므로 최적화를 위해 자주 변경되지 않는 명령어는 위쪽에 작성하는 것이 좋습니다.
Leave a Reply