Back to questions
Junior — Middle
54
Почему иногда в Dockerfile используют несколько команд FROM в одном файле?
Answer from AI
sobes.tech AI
В Dockerfile используют несколько команд FROM для создания многоступенчатой сборки (multi-stage build). Это позволяет разделить процесс сборки на несколько этапов, каждый из которых использует свой базовый образ.
Основные причины:
- Оптимизация размера итогового образа: на первых этапах собирается и компилируется приложение с нужными инструментами, а на финальном этапе копируются только необходимые артефакты в минимальный образ.
- Разделение окружений: можно использовать разные образы для сборки и для запуска, например, образ с Python и инструментами для сборки, а затем легковесный образ только с интерпретатором.
Пример:
FROM python:3.9-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
COPY . .
RUN python setup.py install
FROM python:3.9-alpine
COPY --from=builder /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
CMD ["myapp"]
Таким образом, итоговый образ содержит только необходимое для запуска, без инструментов сборки.