Sobes.tech
Back to questions
Junior — Middle
60

Можете объяснить концепцию многоступенчатой сборки в Docker и как она используется?

Companies where asked
ООО УайтСнейк

Answer from AI

sobes.tech AI

Многоступенчатая сборка (multi-stage build) в Docker позволяет создавать несколько этапов сборки в одном Dockerfile, чтобы уменьшить размер итогового образа и отделить этапы компиляции и упаковки.

Идея в том, что на первых этапах вы используете полный образ с инструментами для сборки приложения (например, компиляторы, зависимости), а на последних этапах копируете только необходимые для запуска артефакты в минимальный образ.

Это позволяет:

  • Сократить размер итогового образа, исключив ненужные файлы и инструменты.
  • Упростить поддержку Dockerfile, объединяя все этапы в одном файле.

Пример:

# Этап сборки
FROM python:3.10-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
COPY . .

# Этап финального образа
FROM python:3.10-alpine
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY --from=builder /app .
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]

Здесь первый этап устанавливает зависимости и собирает приложение, а второй — копирует только нужные файлы и зависимости в легковесный образ.