如何将环境variables值传递到docker容器中的文件我试图运行

假设我在我的docker容器中有一个configuration文件:

/opt/jboss/bin/config.xml

Config文件如下所示:

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

我想在使用“–env-file”参数运行docker容器时传递实际密码。

这是我传入的env文件中的内容:

 PASSWORD=MyPassword 

我理解VARIABLE = VALUE语法。 “MyPassword”是密码variables的值。

docker如何知道用这个variablesfind特定文件(/opt/jboss/bin/config.xml)并将其交换出来? 我是否正确地在configuration文件中声明variables? 出于某种原因,我很难find这些信息。

简短的回答是 – 它不一定。 除非你有一些机制来重写主机环境中的configuration文件。

这在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安装,所以可能有更好的select)

你的env文件中的语法应该是

variable=value

请参阅https://docs.docker.com/engine/reference/commandline/run/上的文&#x6863;

提取

cat ./env.list TEST_FOO=BAR