Вопрос проверяет умение оптимизировать Docker-образы, уменьшая их размер и ускоряя развёртывание.
Размер Docker-образа уменьшают за счёт использования легковесных базовых образов, многоступенчатых сборок, очистки кешей и пакетов, копирования только нужных файлов и фиксации зависимостей.
Multi-stage builds позволяют отделить стадии сборки от стадии выполнения, оставив в финальном образе только минимальный набор файлов.
Маленькие образы ускоряют доставку, уменьшают время деплоя и повышают безопасность.
Docker-образы могут быстро расти в размере, особенно если содержат много инструментов разработки или временных файлов. Чтобы ускорить доставку приложения и снизить нагрузку на CI/CD, важно оптимизировать итоговый размер образа.
Вместо:
FROM python:3.11
используют:
FROM python:3.11-slim
или даже:
FROM python:3.11-alpine
Alpine — самый лёгкий образ, но может требовать больше настройки.
Позволяет отделить сборку приложения от финального runtime.
Пример:
dockerfile
FROM python:3.11 as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --prefix=/install -r requirements.txt
FROM python:3.11-slim
COPY --from=builder /install /usr/local
COPY . /app
CMD ["python", "main.py"]
Преимущества:
удаляются dev-зависимости
финальный образ содержит только приложение и runtime
При установке системных пакетов:
dockerfile
RUN apt-get update && apt-get install -y gcc \
&& rm -rf /var/lib/apt/lists/*
Используй .dockerignore:
text
__pycache__
.git
tests
notebooks
Каждая инструкция RUN, COPY, ADD создаёт новый слой.
Объединяй их:
RUN pip install -r req.txt && python setup.py install
Фиксация зависимостей уменьшает количество пересборок.
упаковка приложения как wheel-пакета
статические бинарные сборки (Go/Rust)
alpine-based runtime + builder stage
Оптимизация Docker-образов делает деплой быстрее, CI/CD стабильнее, а инфраструктуру дешевле. Лучшие практики — multi-stage сборки, минимальные образы, очистка кеша и грамотная организация файлов.
Уровень
Рейтинг:
5
Сложность:
5
Навыки
Docker
Linux
Ключевые слова
Подпишись на Python Developer в телеграм