繁体   English   中英

解析application.conf时,播放无法读取Heroku配置变量

[英]Play can't read Heroku config vars when parsing application.conf

我正在部署用Play编写的应用程序! 框架1.2.3到heroku(雪松堆栈),我通过设置一些环境变量

heroku config:add DB_NAME="FOO"

将它们设置为OK(通过heroku config --app appname看到)。 这些都是通过手动调用System.getenv()从代码中读取的,也可以通过在读取application.conf时通过play进行的替换来读取。

morphia.db.name=${DB_NAME}

机制。 这种策略在本地效果很好,但是在heroku上似乎无法读取环境变量,并且由于无法替换变量,因此将其推送到heroku失败。 游戏发出的警告是:

WARNING: Cannot replace DB_NAME in configuration (morphia.db.name=${DB_NAME})

它之所以死亡,是因为它无法连接到数据库,这是一个致命错误。 它还将尝试连接到$ {HOST}:$ {PORT}的错误报告为“错误”,因此此处未进行替换。 我在这里错过了什么吗,或者这根本不适用于Play! 目前在heroku上的应用程序? 应该怎么做?

推送到Heroku会启动Play应用程序的预编译,然后依次读取您的application.conf文件。 不幸的是,Heroku配置变量在构建时不可用,因此您将看到提到的警告:

WARNING: Cannot replace VALUE in configuration (key=${VALUE})

但是,这不应导致推送失败。 也不会导致您的应用无法运行。 在运行时,Play将重新读取application.conf,配置变量将出现并且其值将被替换。

在这种情况下,很难确切地说出问题所在。 您可以尝试做的一件事就是像Heroku一样运行Play命令,然后看看您得到了什么:

$ play precompile
$ play run --http.port=5000 --%prod -Dprecompiled=true

请注意,单独的预编译步骤和prod框架ID不同于如果您仅在本地运行应用程序,则如下所示:

$ play run

您还可以使用Heroku记录票证,然后有人可以查看您的应用程序。

至少,我们需要摆脱那些警告消息,因为您不是第一个注意到这一点的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM