2017-11-25 240 views
1

的disclude development.conf使用Scala的playframework 2.5,如何從泊塢窗影像創作發揮的框架應用神器

我使用SBT插件PlayScala構建應用程序,裝入瓶內,

,然後建立並推動一個泊塢窗圖像使用sbt插件DockerPlugin

駐留在源代碼存儲庫conf/development.conf(與application.conf相同)。 application.conf的最後一行說include development這意味着如果存在development.conf,則其中的條目將覆蓋application.conf中的某些條目,這樣可以提供使應用程序立即可在本地運行的所有缺省值源代碼從源代碼控制克隆,零額外配置。這種技術可以讓每一位新開發人員在正常工作的應用程序中正常工作,而不會浪費配置時間

完成架構設計的唯一缺失部分是找到一種方法,從應用程序的最終運行時排除development.conf - 否則這將覆蓋泄漏到生產運行時,並且顯然應用程序無法運行。

這可以通過各種不同的方式實現。

一種方法可能是如何將邏輯注入構建任務(作爲sbt的一部分,我假設爲PlayScala的一部分)以從jar工件中排除文件。 其他方式可能是將邏輯注入Docker鏡像創建過程。這個邏輯可以手動執行它之前刪除現有的罐子development.conf(假設這是可能的)

如果你實現提供的一個想法, 或者一些不同的架構方式,給出了同樣的「開箱的「功能,請還跟分享:)

回答

2

我通常有相反的邏輯:

我使用application.conf文件(即播放默認使用),所有在本地運行所需要的東西。然後我有一個production.conf文件,它首先包含application.conf,然後覆蓋必要的東西。

部署到生產(或分期)我指定的生產/ staging.conf文件中使用

+1

以下是Play文檔中討論如何將備用配置文件作爲主文件的部分:https://www.playframework.com/documentation/2.6.x/ProductionConfiguration#Using--Dconfig.resource –

1

這是我如何解決它最終會。

conf/application.conf是生產就緒配置,它包含環境變量的佔位符,值由服務的deployment.yaml文件在k8s中注入。

就在旁邊,conf/development.conf - 它的第一行是include application.conf和它的其餘部分都覆蓋這將使應用程序通過一個簡單的sbt run

是什麼使上述工作運行開箱git clone之後,是增加了以下內容build.sbt的:

PlayKeys.devSettings := Seq( "config.resource" -> "development.conf" )

就像一個魅力:)

0

這可以通過SBT-本機打包的mappings配置鍵來完成:

mappings in Universal ~= (_.filterNot(_._1.name == "development.conf")) 

here