Какой минимальный набор строк для корректной работы Dockerfile?

«Какой минимальный набор строк для корректной работы Dockerfile?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Минимальный Dockerfile должен содержать три директивы:

  1. FROM — указание базового образа.
  2. COPY или ADD — копирование файлов приложения в контейнер.
  3. CMD или ENTRYPOINT — команда для запуска приложения при старте контейнера.

Пример минимального Dockerfile для веб-приложения на Python:

FROM python:3.11-slim
WORKDIR /app
COPY . .
CMD ["python", "app.py"]

Почему этого достаточно? Образ python:3.11-slim уже содержит интерпретатор и базовые утилиты. Директива COPY помещает код в контейнер, а CMD определяет, что запускать. Однако для реальных проектов почти всегда требуются дополнительные шаги: установка зависимостей (RUN pip install -r requirements.txt), настройка портов (EXPOSE) и оптимизация слоев (например, копирование requirements.txt отдельно для кэширования).