Приведи пример применения multi-stage Docker файла
Python
Senior
Без компании
Приведи пример применения multi-stage Docker файла
Ответы
Multi-stage Docker файлы позволяют уменьшить итоговый размер образа, разделяя процесс сборки и финальный образ. Особенно полезно для компилируемых языков или когда нужны временные зависимости.
Пример для Python приложения:
```
# Этап сборки (builder)
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 . .
# Убедимся, что скрипты в PATH
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]
```
**Преимущества:**
- Финальный образ не содержит временных файлов (кеш pip, исходники зависимостей).
- Уменьшенный размер за счет использования `slim`-образов.
- Безопасность: в продакшн попадают только необходимые файлы.