带空格的Docker环境变量

时间:2019-05-09 12:16:38

标签: java docker jar environment-variables

我需要运行一个docker映像,在其中将一堆jvm配置传递到jar文件。我将通过-e参数传递配置,例如下面的示例。

Dockerfile:

FROM openjdk:9-jre

COPY test.jar /

CMD java -jar -DinstallationDate=$INSTALLATION_DATE /test.jar

运行命令:

docker run -e INSTALLATION_DATE="03.05.10.2019 15:00:00" space

问题是,当我运行它时,它给我以下错误:

  

错误:无法访问jarfile 15:00:00

我尝试使用json表示法运行它,

docker run -e ["INSTALLATION_DATE","03.05.10.2019 15:00:00"] space

它没有给我一个错误,但是该参数为空字符串。 我还尝试使用“ \”转义空格字符,但仍然无法正常工作。

任何人都知道如何将此参数发送到docker容器内的jar执行中?还有另一种方法吗?

1 个答案:

答案 0 :(得分:2)

该问题很可能是由于您的CMD中的Dockerfile

CMD java -jar -DinstallationDate=$INSTALLATION_DATE /test.jar

...在展开变量$INSTALLATION_DATE之后会进行分词。为了关闭java的第二个参数的单词拆分,请考虑将变量用双引号引起来:

CMD java -jar -DinstallationDate="$INSTALLATION_DATE" /test.jar