如何传递系统属性到docker集装箱?

所以我知道你可以通过使用-e来将环境variables传递给docker容器:

docker run -it -e "var=var1" myDockerImage 

但是我需要将系统属性传递给docker容器,因为这是我运行JAR的方式:

 java -Denviroment=dev -jar myjar.jar 

那么如何在Docker中传递-D系统属性? 喜欢:

 docker run -it {INSERT Denviroment here} myDockerImage 

在java命令中使用你传入容器的variables:

 docker run -it -e "ENV=dev" myDockerImage java -Denvironment=$ENV -jar myjar.jar 

也可以使用下面的start.sh ENTRYPOINT作为Docker容器,确保使用数组语法,例如:

Dockerfile:

 ... ENTRYPOINT ["/start.sh"] 

实际的start.sh脚本:

 #!/bin/bash export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64" exec $JAVA_HOME/bin/java -jar myjar.jar $@ 

然后,您可以直接将Java系统属性作为docker run容器parameter passing给您的应用程序:

 docker run myDockerImage "-Dvar=var1"