Назад к вопросам
Middle
5
Dockerfile best practices. Что используете?
Компании, где спрашивали
Ртк-софт
Ответ от нейросети
sobes.tech AI
Основные best practices для Dockerfile:
- Использовать минимальные базовые образы (например, alpine), чтобы уменьшить размер итогового образа.
- Минимизировать количество слоёв, объединяя команды RUN через &&.
- Кэшировать зависимости отдельно от копирования исходного кода, чтобы ускорить сборку при изменении только кода.
- Использовать .dockerignore для исключения лишних файлов из контекста сборки.
- Явно указывать версии пакетов и базовых образов для воспроизводимости.
- Запускать контейнеры от непривилегированных пользователей для безопасности.
- Использовать multi-stage builds для отделения этапа сборки от финального образа, чтобы уменьшить размер.
Пример:
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o myapp
FROM alpine:latest
RUN adduser -D appuser
USER appuser
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
Такой подход позволяет получить компактный и безопасный образ с минимальным количеством слоёв.