尝试使用 Distillery 在运行时获取系统变量时遇到问题。目前,我已将与数据库的连接定义为:
config :myapp, MyApp.Repo,
adapter: Ecto.Adapters.Postgres,
timeout: 2000000,
username: "${DB_USER}",
password: "${DB_PASSWORD}",
database: "${DB_DATABASE}",
hostname: "${DB_HOST}",
port: 5432,
pool_size: 10
然后,我正在运行 phx.digest 并混合发布来获取我的 tar 文件。然后,我使用在设置了所有环境变量的 ubuntu 服务器上运行的 systemd 配置部署此 tar 文件。这些是 systemd 服务的重要行:
[Service]
Type=forking
WorkingDirectory=/opt/app
User=ubuntu
RemainAfterExit=yes
Restart=on-failure
RestartSec=5
Environment=MIX_ENV=stage "PORT=4000"
Environment=LANG=en_US.UTF-8
Environment=REPLACE_OS_VARS=true
EnvironmentFile=/etc/profile
ExecStart=/opt/app/bin/myapp migrate-start
ExecStop=/opt/app/bin/myapp stop
ExecReload=/opt/app/bin/myapp restart
SyslogIdentifier=myapp
当我尝试在服务器实例上运行此服务时。它正在尝试连接到 ${DB_HOST}:5432 作为 url,并且没有评估我不想用配置的值替换它。在使用硬编码值之前,我已经成功运行了它,所以我知道问题在于替换值。有人对我如何解决此错误有任何建议吗?我在服务器上设置了所有必要的值,包括再次设置 REPLACE_OS_VARS=true。
任何帮助或指导表示赞赏。