Как создать Docker-образ для Python-приложения

Ответ

Для создания Docker-образа Python-приложения используется файл Dockerfile, который содержит пошаговые инструкции для сборки. Процесс включает выбор базового образа, установку зависимостей, копирование кода и определение команды запуска.

Базовый пример Dockerfile:

# 1. Выбор базового образа. Используем легковесный 'slim' вариант.
FROM python:3.9-slim

# 2. Установка рабочей директории внутри контейнера.
WORKDIR /app

# 3. Копирование файла зависимостей.
COPY requirements.txt .

# 4. Установка зависимостей. 
# --no-cache-dir уменьшает размер образа.
RUN pip install --no-cache-dir -r requirements.txt

# 5. Копирование исходного кода приложения.
COPY . .

# 6. Определение команды для запуска приложения при старте контейнера.
CMD ["python", "-u", "main.py"]

Ключевые практики для оптимизации:

  • Оптимизация кэширования слоев: Копирование requirements.txt и установка зависимостей выполняются до копирования исходного кода. Это позволяет Docker использовать кэш для слоя с зависимостями, если меняется только код, что значительно ускоряет пересборку.
  • Использование .dockerignore: Создайте файл .dockerignore, чтобы исключить из образа ненужные файлы и директории (например, .git, __pycache__, venv), уменьшая его размер и предотвращая утечку чувствительных данных.
  • Многоэтапные сборки (Multi-stage builds): Используются для сложных проектов, где для сборки требуются одни зависимости, а для запуска — другие. Это позволяет сохранить финальный образ минимальным, исключив из него сборочное окружение.