Sobes.tech
Назад к вопросам
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"]

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