수색…


비고

  1. 기본 이미지 선언 ( FROM )
  2. 메타 데이터 (예 : MAINTAINER , LABEL )
  3. 시스템 의존성 설치 (예 : apt-get install , apk add )
  4. 응용 프로그램 종속성 파일 복사 (예 : bower.json , package.json , build.gradle , requirements.txt )
  5. 응용 프로그램 종속성 설치 (예 : npm install , pip install )
  6. 전체 코드베이스 복사하기
  7. 기본 런타임 구성 설정 (예 : CMD , ENTRYPOINT , ENV , EXPOSE )

이 순서는 Docker에 내장 된 캐싱 메커니즘을 사용하여 빌드 시간을 최적화하기 위해 만들어졌습니다.

엄지 손가락의 규칙 :

자주 변경되는 부분 (예 : 코드베이스)은 Dockerfile의 맨 아래에 배치해야하며 그 반대의 경우도 마찬가지입니다. 거의 변하지 않는 부품 (예 : 의존성)은 맨 위에 놓아야합니다.

단순한 Dockerfile

# Base image
FROM python:2.7-alpine

# Metadata
MAINTAINER John Doe <[email protected]>

# System-level dependencies
RUN apk add --update \
    ca-certificates \
    && update-ca-certificates \
    && rm -rf /var/cache/apk/*

# App dependencies
COPY requirements.txt /requirements.txt
RUN pip install -r /requirements.txt

# App codebase
WORKDIR /app
COPY . ./

# Configs
ENV DEBUG true
EXPOSE 5000
CMD ["python", "app.py"]

MAINTAINER는 Docker 1.13에서 더 이상 사용되지 않으며 LABEL을 사용하여 대체해야합니다. ( 출처 )

예 : LABEL Maintainer = "John Doe [email protected]"



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow