首页 > 解决方案 > 带空格的 Docker 环境变量

问题描述

我需要运行一个 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 执行?还有另一种方法吗?

标签: javadockerjarenvironment-variables

解决方案


问题很可能发生,因为CMD在您的Dockerfile

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

...在变量$INSTALLATION_DATE展开后会进行分词。为了关闭对 的第二个参数的分词java,请考虑将变量括在双引号中:

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

推荐阅读