Sobes.tech
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 устанавливаются зависимости и копируется код, а в финальный образ попадают только необходимые файлы и установленные пакеты без инструментов сборки, что уменьшает размер образа и повышает безопасность.