Docker — это не только про контейнеры, но и про грамотный подход к их созданию. Собрали советы, которые сделает ваши образы безопаснее, легче и быстрее.
1. Лейблы важны
Добавляйте метаданные
LABEL maintainer="dev@company.com" version="1.2.0", чтобы понимать: кто собрал образ, зачем он нужен и какой это релиз. Это упростит отладку и автоматизацию в CI/CD.2. Сканируйте образы на уязвимости
Перед выкладкой прогоняйте образы через Trivy или Grype:
trivy image myapp:1.0.0
3. Запускайте контейнеры от непривилегированного пользователя
Не используйте root без необходимости.
RUN adduser --disabled-password appuser
USER appuser
4. Используйте .dockerignore
Не надо тащить в образ .git, тестовые файлы и кэш IDE.
.git
node_modules
*.log
5. Мультистейдж-сборка
Стройте, а потом очищайте.
FROM golang:1.21 AS builder
WORKDIR /app
COPY . .
RUN go build -o main .
FROM alpine:3.18
COPY --from=builder /app/main .
CMD ["./main"]
6. Используйте конкретные версии образов
FROM python:3.11.4 лучше, чем FROM python:latest.Это делает сборки предсказуемыми и исключает сюрпризы при апдейтах.
7. Следите за порядком слоёв
Сначала копируйте файлы, которые редко меняются (requirements.txt), а уже потом код.
Так кэширование будет работать эффективнее.
8. Используйте переменные окружения
Они упрощают деплой на разных средах:
ENV APP_ENV=production
9. Используйте официальные образы
Начинайте с доверенных источников — они безопаснее и поддерживаются сообществом.
Например:
FROM nginx:1.25-alpine
Профессиональный Docker — это не про магию, а про дисциплину.
🐸Библиотека devops'a
#буст
