如何将 docker 变量传递给 jboss-cli.sh?
How to pass a docker variable to jboss-cli.sh?
我的 jboss cli 文件中有一个变量,我们称它为 ${FOO}。
我可以看到变量设置在我的 Docker 文件中,如果我:
RUN echo ${FOO}
我看到打印的值。
我有一个 foo.cli 文件,其中包含类似于以下内容的行:
/system-property=foo:add(value="${FOO}")
当我 运行 jboss-cli.sh foo.cli
我得到:
Cannot resolve expression ${FOO}.
有没有办法将变量从 Docker 传递到 jboss-cli.sh 的文件参数?
我也尝试在 system-属性 行中删除 ${FOO} 周围的引号,但没有成功。
您可能需要将 jboss-cli.xml
设置为 <resolve-parameter-values>true<\/resolve-parameter-values>
$ sed -i "s/<resolve-parameter-values>false<\/resolve-parameter-values>/\
<resolve-parameter-values>true<\/resolve-parameter-values>/" \
$JBOSS_HOME/bin/jboss-cli.xml
来源:https://mirocupak.com/using-environment-variables-in-jboss-cli/
这是因为 CLI 不将值与名称相同对待。简而言之,操作名称、参数名称、header 名称和值、命令名称以及命令参数名称都是自动解析的。参数和参数值不是。要解决此问题,我们需要在 jboss-cli.xml
.
中将 resolve-parameter-values
设置为 true
例如:-
sed -i "s/<resolve-parameter-values>false<\/resolve-parameter-values>/\
<resolve-parameter-values>true<\/resolve-parameter-values>/" \
$JBOSS_HOME/bin/jboss-cli.xml
请注意,上面的命令是 one-off 解决方案。从维护的角度来看,对 XML 使用 sed
通常不是一个好主意。如果您要自动执行此操作,请考虑改用 XPath。
注意:- 此功能需要 WildFly 8.0.0.CR1 或更新版本。
这些是解决问题的好提示,但 sed 命令在 Mac 上无法正常工作。 “-i”有很多乐趣。更多信息在这里:
sed command with -i option failing on Mac, but works on Linux
在 Mac 这对我有用:
sed -i "" "s/false/true/" $JBOSS_HOME/bin/jboss-cli.xml
不幸的是,这种使用 sed 的方式不适用于 RHEL。
我的 jboss cli 文件中有一个变量,我们称它为 ${FOO}。
我可以看到变量设置在我的 Docker 文件中,如果我:
RUN echo ${FOO}
我看到打印的值。
我有一个 foo.cli 文件,其中包含类似于以下内容的行:
/system-property=foo:add(value="${FOO}")
当我 运行 jboss-cli.sh foo.cli
我得到:
Cannot resolve expression ${FOO}.
有没有办法将变量从 Docker 传递到 jboss-cli.sh 的文件参数?
我也尝试在 system-属性 行中删除 ${FOO} 周围的引号,但没有成功。
您可能需要将 jboss-cli.xml
设置为 <resolve-parameter-values>true<\/resolve-parameter-values>
$ sed -i "s/<resolve-parameter-values>false<\/resolve-parameter-values>/\
<resolve-parameter-values>true<\/resolve-parameter-values>/" \
$JBOSS_HOME/bin/jboss-cli.xml
来源:https://mirocupak.com/using-environment-variables-in-jboss-cli/
这是因为 CLI 不将值与名称相同对待。简而言之,操作名称、参数名称、header 名称和值、命令名称以及命令参数名称都是自动解析的。参数和参数值不是。要解决此问题,我们需要在 jboss-cli.xml
.
resolve-parameter-values
设置为 true
例如:-
sed -i "s/<resolve-parameter-values>false<\/resolve-parameter-values>/\
<resolve-parameter-values>true<\/resolve-parameter-values>/" \
$JBOSS_HOME/bin/jboss-cli.xml
请注意,上面的命令是 one-off 解决方案。从维护的角度来看,对 XML 使用 sed
通常不是一个好主意。如果您要自动执行此操作,请考虑改用 XPath。
注意:- 此功能需要 WildFly 8.0.0.CR1 或更新版本。
这些是解决问题的好提示,但 sed 命令在 Mac 上无法正常工作。 “-i”有很多乐趣。更多信息在这里:
sed command with -i option failing on Mac, but works on Linux
在 Mac 这对我有用: sed -i "" "s/false/true/" $JBOSS_HOME/bin/jboss-cli.xml
不幸的是,这种使用 sed 的方式不适用于 RHEL。