Sobes.tech
Назад к вопросам
Senior
2

Какие практики для уменьшения размера Docker-образа существуют?

Компании, где спрашивали
Flant

Ответ от нейросети

sobes.tech AI

Для уменьшения размера Docker-образа применяют несколько практик:

  • Использование минималистичных базовых образов, например, alpine вместо ubuntu.
  • Многоступенчатая сборка (multi-stage builds), когда в первых этапах собирается приложение, а в финальном образе остаётся только минимальный runtime с собранным бинарником.
  • Очистка кешей и временных файлов после установки зависимостей внутри Dockerfile.
  • Объединение команд RUN для уменьшения количества слоёв.
  • Использование .dockerignore для исключения ненужных файлов из контекста сборки.

Пример многоступенчатого Dockerfile для Go:

# Stage 1: Build
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Stage 2: Minimal runtime
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]

Такой подход позволяет получить компактный образ с минимальным набором файлов.