如何通过环境变量的值转换成文件中的泊坞窗容器我试图运行
比方说,我有我的搬运工容器中的配置文件位于:如何通过环境变量的值转换成文件中的泊坞窗容器我试图运行
/opt/jboss/bin/config.xml
配置文件看起来是这样的:
<Database-Password>$PASSWORD</Database-Password>
我想传递的,当我去运行使用“--env文件”的说法泊坞窗容器的实际密码。
这是在ENV文件,我传递的内容:
PASSWORD=MyPassword
我理解的变量= value语法。 “MyPassword”是密码变量的值。
docker如何知道使用此变量查找特定文件(/opt/jboss/bin/config.xml)并将其交换出来?我是否在配置文件中正确声明了变量?出于某种原因,我无法找到这些信息。
在ENV文件中的语法应该是
variable=value
看到该文档在https://docs.docker.com/engine/reference/commandline/run/
提取
cat ./env.list TEST_FOO=BAR
简短的回答是 - 它不一定会。除非你有一些机制来重写主机环境中的配置文件。
这在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")'
(这将需要安装perl
和XML::Twig
,所以可能会有更好的选择)
好吧,容器实际上启动了一个应用服务器,它使用config.xml文件中的凭证来连接 – daniel9x
当然,但它可能不会扩展变量'$ PASSWORD',除非明确告知这样做。在尝试使用配置之前,您需要一些扩展它的方法,否则它会直接看到“$ PASSWORD”。 –
您将需要一些shell脚本,在'
您的问题不清楚,请尽量做得更好。 –
由于你的xml文件没有预期的语法,docker会忽略它 – user2915097
预期的语法是什么?如果我只是在XML文件中输入“PASSWORD”而不是“$ PASSWORD”,那会起作用吗? – daniel9x