Приходилось ли использовать 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-пакетов, а затем очистить их.