Зачем нужны лучшие практики 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 по лучшим практикам — это залог безопасных, лёгких и эффективных контейнеров. Применяйте их в каждом проекте — и ваша инфраструктура скажет спасибо.