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"]
Здесь на первом этапе устанавливаются зависимости и собирается приложение, а на втором — создаётся минимальный образ с только нужными файлами.