Переменные окружения стали стандартным способом настраивать контейнер, и это удобно ровно до момента, когда через них начинают передавать пароли. Переменная видна в описании контейнера, попадает в логи запуска, наследуется дочерними процессами и легко утекает в отчёт об ошибке.
Отдельная ошибка — зашивать значения прямо в описание сборки. Всё, что попало в слой, остаётся в образе навсегда, даже если следующей строкой файл удалён. Образ, отправленный в реестр, унесёт секрет с собой.
Рабочие варианты выглядят скучно: файл с переменными, который не попадает в репозиторий, механизм секретов оркестратора, подключение файла с правами только на чтение для нужного пользователя. Общий принцип — секрет доставляется в момент запуска, а не встраивается в готовый артефакт.
И полезная привычка: разделять настройки и секреты. Адрес базы, номер порта, режим отладки — это конфигурация, её не жалко видеть в описании. Пароль к базе — нет, и он должен приходить другим путём 💡
Docker на Практике
@docker_practice_ru_n1k
Переменные окружения стали стандартным способом настраивать контейнер, и это удобно ровно до момента, когда че
Этот пост опубликован в Telegram-канале Docker на Практике. Подписаться можно по ссылке: @docker_practice_ru_n1k.