Передача API-ключа email в контейнер без хардкодинга в app.yml

Привет! У меня файл конфигурации app.yml для Discourse отслеживается в репозитории Git (вместе с остальной конфигурацией сервера).

Естественно, я хочу исключить DISCOURSE_SMTP_PASSWORD из репозитория Git, поэтому хочу передавать его отдельно. Есть ли рекомендуемый способ сделать это?

Я пробовал:

Использовать секцию env_file: в docker-compose вместе с env:, чтобы передать отдельный файл:

env_file:
  - path: /var/discourse/containers/creds.env

env:
  LANG: en_US.UTF-8
  # DISCOURSE_DEFAULT_LOCALE: en
  ...


====== creds.env ======
DISCOURSE_SMTP_PASSWORD="..."

Но мне не удалось заставить Docker подхватить переменную окружения.

Я также пробовал передать её через --docker-args:
sudo /var/discourse/launcher rebuild app --docker-args DISCOURSE_SMTP_PASSWORD=$DISCOURSE_SMTP_PASSWORD
Но это сразу приводит к ошибке:
docker: invalid reference format: repository name must be lowercase.

Спасибо вам за этот замечательный программный продукт, и надеюсь, что вы все в безопасности :)))

Привет, добро пожаловать обратно!

Думаю, правильный синтаксис будет примерно таким:

./launcher rebuild app --docker-args "-e DISCOURSE_SMTP_PASSWORD=\"password\""

С флагом --env-file также должно сработать:

./launcher rebuild app --docker-args "--env-file=/var/discourse/containers/creds.env"

Отлично сработало!

(Для истории: мне также пришлось немного подправить кавычки, вот так:

./launcher rebuild app --docker-args "-e DISCOURSE_SMTP_PASSWORD=$DISCOURSE_SMTP_PASSWORD"

Иначе я получал **ERROR** - 535 Authentication failed. А в последней строке вывода консоли пересборки видно, что в команде есть лишний набор кавычек. Мне кажется, что объявление переменной env_file тоже не должно быть заключено в кавычки, в отличие от моего первоначального поста.)

Огромное спасибо за помощь и отличного вам дня!