Зачем нужны лучшие практики Dockerfile
Плохо написанные Dockerfile создают большие, небезопасные и трудноподдерживаемые образы. Соблюдение лучших практик помогает делать образы быстрее, меньше и безопаснее.
1. Используйте официальные или минимальные образы
Лучше выбирать минимальные или проверенные образы:
FROM alpine:3.19
# или
FROM python:3.11-slim
2. Фиксируйте версии
Избегайте неожиданных обновлений:
RUN apt-get install -y curl=7.68.0-1ubuntu2.6
3. Объединяйте RUN-команды
Меньше слоёв — меньше размер:
RUN apt-get update && apt-get install -y curl unzip && rm -rf /var/lib/apt/lists/*
4. Используйте .dockerignore
Исключите ненужные файлы из контекста сборки:
node_modules
.git
*.log
5. Применяйте многоступенчатую сборку
Так создаются компактные production-образы:
FROM golang:1.21 as builder
WORKDIR /app
COPY . .
RUN go build -o main
FROM alpine:3.19
COPY --from=builder /app/main /main
CMD ["/main"]
6. Не запускайте от root
Добавьте обычного пользователя для безопасности:
RUN addgroup -S app && adduser -S app -G app
USER app
7. Добавьте Healthcheck
Для мониторинга состояния контейнера:
HEALTHCHECK CMD curl --fail http://localhost:8080/health || exit 1
8. Удаляйте временные файлы
Меньше мусора — чище образ:
RUN rm -rf /tmp/*
Заключение
Dockerfile по лучшим практикам — это залог безопасных, лёгких и эффективных контейнеров. Применяйте их в каждом проекте — и ваша инфраструктура скажет спасибо.