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

Как уменьшить размер Docker-образа?

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

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

sobes.tech AI

Чтобы уменьшить размер Docker-образа, можно использовать несколько подходов:

  • Выбор минимального базового образа: Например, alpine вместо ubuntu или debian. Alpine весит около 5 МБ.

  • Многоступенчатая сборка (multi-stage builds): Позволяет собирать приложение в одном образе, а в финальный копировать только необходимые артефакты, исключая инструменты сборки.

  • Удаление ненужных файлов: Очистка кешей пакетных менеджеров (apt-get clean, удаление временных файлов) внутри Dockerfile.

  • Объединение команд RUN: Использование && для объединения команд уменьшает количество слоёв образа.

  • Минимизация слоёв: Каждый слой добавляет размер, поэтому стоит минимизировать количество инструкций, создающих слои.

  • Использование .dockerignore: Исключает из контекста сборки ненужные файлы.

Пример многоступенчатой сборки для Go-приложения:

# Этап сборки
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# Финальный образ
FROM alpine
COPY --from=builder /app/myapp /usr/local/bin/myapp
CMD ["myapp"]

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