도커파일

IT 위키

도커파일(Dockerfile)은 도커 이미지(Docker image)를 자동으로 빌드하기 위해 필요한 명령들을 순서대로 나열한 텍스트 파일이다.

정의[편집 | 원본 편집]

도커파일은 도커 엔진이 이미지 생성 시 실행할 모든 명령을 담고 있는 텍스트 문서이며, 명령어 하나하나가 이미지의 레이어(layer)를 구성한다.

주요 지시어(Instructions)[편집 | 원본 편집]

도커파일에는 다음과 같은 지시어들이 가장 일반적으로 사용된다:

  • FROM – 빌드의 기반이 되는 베이스 이미지를 지정한다. 도커파일은 반드시 이 지시어로 시작해야 한다.
  • RUN – 이미지 빌드 과정 중에 쉘 명령을 실행하여 설치 및 구성 작업을 수행한다.
  • COPY / ADD – 호스트의 파일 또는 디렉토리를 이미지 내부로 복사한다. ADD는 URL 및 압축 파일 자동 풀기 기능도 지원한다.
  • WORKDIR – 이후 지시어들(RUN, CMD 등)이 실행될 작업 디렉토리를 설정한다.
  • ENV – 환경 변수 설정.
  • EXPOSE – 컨테이너가 사용하는 네트워크 포트를 명시.
  • ENTRYPOINT / CMD – 컨테이너 시작 시 실행될 기본 명령을 지정한다. ENTRYPOINT는 고정 실행이 가능하며, CMD는 기본 실행 명령으로서 덮어쓰기 가능하다.
  • 이 외에도 LABEL, USER, VOLUME, HEALTHCHECK, ARG, ONBUILD 등 다양한 지시어들이 존재한다.

쓰기 방식 및 형식[편집 | 원본 편집]

도커파일은 대문자 지시어와 인수를 활용한 다음 형식으로 작성한다:

# 주석
INSTRUCTION arguments

주석은 `#`로 시작하며, 파서는 이를 무시한다.

예제[편집 | 원본 편집]

간단한 Python 애플리케이션용 예시 도커파일:

FROM python:3.13
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY src/ ./src
EXPOSE 5000
CMD ["python", "src/main.py"]

이 도커파일은 베이스 이미지 지정, 작업 디렉토리 설정, 의존성 설치, 코드 복사, 포트 노출, 실행 명령 지정 등의 일반적인 흐름을 보여준다.

작성 시 권장 모범 사례[편집 | 원본 편집]

  • 필요한 지시어를 하나의 RUN으로 결합해 레이어 수를 최소화한다.
  • 빌드 단계를 최적화하고, 불필요한 파일은 제거하여 이미지 크기를 줄인다.
  • 유지보수성과 효율성을 고려해 Dockerfile 리팩터링을 정기적으로 수행한다. 예컨대 자동화된 리팩토링 도구를 활용하면 이미지 크기와 빌드 시간을 유의미하게 줄일 수 있다.
  • 지시어 순서를 재구성해 CI/CD 환경에서 반복 빌드시 효율을 높이는 전략도 가능하다.

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]

  • Docker Docs, “Dockerfile reference”
  • Docker Docs, “Writing a Dockerfile”
  • Medium, “A Dockerfile is the basic concept for building Docker images”
  • Sealos Blog, “What Is a Dockerfile? Complete Guide to Docker Image Creation”
  • arXiv, “Refactoring for Dockerfile Quality: A Dive into Developer Practices and Automation Potential”
  • arXiv, “Doctor: Optimizing Container Rebuild Efficiency by Instruction Re‑Orchestration”

각주[편집 | 원본 편집]