app.yml에 하드코딩하지 않고 컨테이너에 이메일 API 키 전달하기

안녕하세요! 저는 Discourse 설정 파일인 app.yml을 git 저장소에 추적하고 있습니다(서버의 나머지 설정과 함께).

물론, DISCOURSE_SMTP_PASSWORD를 git 저장소 밖으로 빼두길 원하므로 별도로 전달하고 싶습니다. 이걸 하는 권장 방법이 있을까요?

아래와 같이 시도해 보았습니다:

docker-compose의 env_file: 섹션과 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 변수 선언에도 따옴표를 붙이지 않는 것이 더 적절할 것 같습니다. 제 원래 게시글과는 달리요.)

도움 주셔서 정말 감사합니다. 좋은 하루 보내세요!