Пароли в Dockerfile — путь к утечке. Как передавать секреты правильно
Видел десятки проектов, где пароль от базы вписан прямо в Dockerfile или в compose-файл, а файл лежит в открытом репозитории.
Уровни правильности, от простого к надёжному:
Уровень 1: файл .env. Compose автоматически читает переменные из файла .env рядом. В compose пишете MYSQL_ROOT_PASSWORD: ${DB_PASS}, значение — в .env. Сам .env добавляете в .gitignore и никогда не коммитите.
Уровень 2: переменные через команду. docker run -e DB_PASS=... — ничего не пишется на диск, но остаётся в истории терминала.
Уровень 3: Docker secrets. Секрет монтируется в контейнер как файл в /run/secrets/. Приложение читает оттуда. Используется в Swarm, но поддерживается и в обычном Compose.
Для большинства маркетинговых задач достаточно первого уровня. Ключевое — .env вне репозитория, и разные .env для локальной и боевой среды.
Docker для Маркетера
@docker_marketers
Пароли в Dockerfile — путь к утечке. Как передавать секреты правильно
Этот пост опубликован в Telegram-канале Docker для Маркетера. Подписаться можно по ссылке: @docker_marketers.