Sobes.tech
Back to questions
Junior — Middle
56

В чем заключается преимущество использования Multi-stage сборки при создании Docker-образов?

Answer from AI

sobes.tech AI

Преимущество Multi-stage сборки в Docker заключается в возможности создавать компактные и оптимизированные образы, разделяя процесс сборки на несколько этапов.

Основные плюсы:

  • На первом этапе можно использовать большой образ с необходимыми инструментами для сборки (например, компиляторы, зависимости).
  • На последующих этапах копируются только необходимые артефакты (например, скомпилированные бинарники или файлы), исключая все лишнее.
  • В результате получается минимальный по размеру образ, что ускоряет загрузку и деплой.
  • Уменьшается количество уязвимостей, так как в финальном образе отсутствуют инструменты разработки.

Пример Dockerfile с multi-stage сборкой:

# Этап сборки
FROM python:3.10-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
COPY . .

# Финальный этап
FROM python:3.10-alpine
COPY --from=builder /root/.local /root/.local
COPY --from=builder /app /app
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "/app/main.py"]

Здесь на первом этапе устанавливаются зависимости и собирается приложение, а на втором — создаётся минимальный образ с только нужными файлами.