Работал ли с многоступенчатыми сборками в Docker
Python
Middle
Без компании
Работал ли с многоступенчатыми сборками в Docker
Ответы
Да, работал. Многоступенчатые сборки (multi-stage builds) в Docker позволяют оптимизировать размер итогового образа, разделяя процесс сборки и финальный образ. Особенно полезно для компилируемых языков (Go, Rust) и 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
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]
```
Ключевые моменты:
- Первый этап (`builder`) устанавливает зависимости
- Второй этап копирует только нужные артефакты
- Итоговый образ не содержит ненужных слоёв (исходный код, кэш pip и т.д.)
Плюсы: уменьшение размера образа, улучшение безопасности (меньше уязвимостей), ускорение деплоя.