Поиск…


замечания

  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. Настройка ENTRYPOINT времени выполнения по умолчанию (например, CMD , ENTRYPOINT , ENV , EXPOSE )

Эти заказы выполняются для оптимизации времени сборки с использованием встроенного механизма кэширования Docker.

Правило:

Части, которые часто меняются (например, кодовая база), должны располагаться вблизи дна 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