Приходилось ли использовать multi-stage сборку в Docker

Python Middle Без компании
Приходилось ли использовать multi-stage сборку в Docker
Ответы
Да, приходилось. Multi-stage сборка в Docker позволяет уменьшить итоговый размер образа, разделяя процесс на этапы: сборка и финальный образ. Это особенно полезно для компилируемых языков (например, Go) и интерпретируемых (Python с зависимостями). **Пример для Python:** ``` # Этап сборки FROM python:3.9-slim as builder WORKDIR /app COPY requirements.txt . RUN pip install --user -r requirements.txt # Финальный этап FROM python:3.9-slim WORKDIR /app # Копируем только установленные пакеты из builder COPY --from=builder /root/.local /root/.local COPY . . ENV PATH=/root/.local/bin:$PATH CMD ["python", "app.py"] ``` **Плюсы:** - Уменьшение размера (не нужны инструменты сборки в финальном образе). - Безопасность (меньше слоёв и уязвимостей). Для компилируемых зависимостей (например, `psycopg2`) можно добавить этап с установкой build-пакетов, а затем очистить их.