簡體   English   中英

使用typesafe配置中的環境變量覆蓋配置

[英]Overriding configuration with environment variables in typesafe config

使用typesafe配置 ,如何使用環境變量覆蓋參考配置? 例如,假設我有以下配置:

foo: "bar"

我希望它被環境變量FOO覆蓋(如果存在)。

如果我正確理解你的問題,答案就在這里 你可以做

foo: "bar"
foo: ${?FOO}

官方文檔現在非常清楚地描述它,並支持多種選擇。 這是一個簡短的總結......

常見的方法是使用此表單:

basedir = "/whatever/whatever"
basedir = ${?FORCED_BASEDIR}

如果設置了env變量,那么它將覆蓋您的默認值,否則它將保持不變。

方便的方法是使用JVM屬性-Dconfig.override_with_env_vars=true來覆蓋任何配置變量。 在這種情況下,您不必創建重復的聲明。 您的env變量必須以前綴CONFIG_FORCE_命名。 了解env var如何在文檔中配置名稱映射。 例如: CONFIG_FORCE_a_b__c___d ab-c_d將映射到ab-c_d

最后,如果您想要推出自己的映射 ,這與上面描述的選項類似,而不使用override_with_env_vars您可以使用一些shell hacking,如下所述。

如果必須使用環境變量,並且它們的命名與配置名稱一致,則可以使用這樣的bash腳本自動從環境變量轉換為JVM cmd args。 這些-D JVM args將覆蓋Typesafe Config值。 例:

# export my_PROP1=1
# export my_PROP2=2
#
# props=$(env | grep my_ | awk '{print "-D"$_}' ORS=' ')
#
# echo "JVM executable command is: java $props some.jar"
JVM executable command is: java -Dmy_PROP2=2 -Dmy_PROP1=1  some.jar

將大寫轉換為小寫,如果不直接映射到您的配置值,請根據需要對env變量進行子串操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM