Как уменьшить размер Docker-образа?
Ответ от нейросети
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"]
Такой подход позволяет получить компактный образ без инструментов сборки.