2016-02-05 44 views
0

比方說,我有我的搬運工容器中的配置文件位於:如何通過環境變量的值轉換成文件中的泊塢窗容器我試圖運行

/opt/jboss/bin/config.xml

配置文件看起來是這樣的:

<Database-Password>$PASSWORD</Database-Password> 

我想傳遞的,當我去運行使用「--env文件」的說法泊塢窗容器的實際密碼。

這是在ENV文件,我傳遞的內容:

PASSWORD=MyPassword 

我理解的變量= value語法。 「MyPassword」是密碼變量的值。

docker如何知道使用此變量查找特定文件(/opt/jboss/bin/config.xml)並將其交換出來?我是否在配置文件中正確聲明瞭變量?出於某種原因,我無法找到這些信息。

+1

您的問題不清楚,請儘量做得更好。 –

+0

由於你的xml文件沒有預期的語法,docker會忽略它 – user2915097

+0

預期的語法是什麼?如果我只是在XML文件中輸入「PASSWORD」而不是「$ PASSWORD」,那會起作用嗎? – daniel9x

回答

1

簡短的回答是 - 它不一定會。除非你有一些機制來重寫主機環境中的配置文件。

這在shell腳本中非常容易 - 您可以像剛纔那樣引用它。

但是XML文件不是「運行」的,所以它可能不會工作。

舉個例子 - 如果你想「編輯」你的XML,你可以用perl做到這一點 - 但你必須要安裝多一點的東西來得到它的工作:

perl -MXML::Twig -e'XML::Twig -> new (twig_handlers => { Database-Password => sub { $_ -> set_text ($ENV{PASSWORD}) } }) -> parsefile_inplace("/opt/jboss/bin/config.xml")' 

(這將需要安裝perlXML::Twig,所以可能會有更好的選擇)

+0

好吧,容器實際上啓動了一個應用服務器,它使用config.xml文件中的憑證來連接 – daniel9x

+1

當然,但它可能不會擴展變量'$ PASSWORD',除非明確告知這樣做。在嘗試使用配置之前,您需要一些擴展它的方法,否則它會直接看到「$ PASSWORD」。 –

+0

您將需要一些shell腳本,在''和'之間提取文件中的內容'將其寫入以'Password ='開頭的行的文件中 – user2915097