Back to questions
Junior — Middle
62
Можешь привести пример использования многоступенчатого Dockerfile для оптимизации сборки образа?
Answer from AI
sobes.tech AI
Многоступенчатый (multi-stage) Dockerfile позволяет уменьшить размер итогового образа, разделяя процесс сборки на несколько этапов. Например, сначала собирается приложение с необходимыми зависимостями, а затем в финальный образ копируются только нужные артефакты без лишних инструментов сборки.
Пример для Python-приложения:
# Этап сборки
FROM python:3.10-slim AS builder
WORKDIR /app
COPY requirements.txt ./
RUN pip install --user -r requirements.txt
COPY . ./
# Финальный образ
FROM python:3.10-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY --from=builder /app /app
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]
Здесь на этапе builder устанавливаются зависимости и копируется код, а в финальный образ попадают только необходимые файлы и установленные пакеты без инструментов сборки, что уменьшает размер образа и повышает безопасность.