簡體   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