2015-10-29 36 views
7

所以我知道,你可以使用-e像传递环境变量来泊坞窗容器:如何将系统属性传递给码头集装箱?

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

但我需要通过一个系统属性泊坞窗容器,因为这是我跑我的JAR:

java -Denviroment=dev -jar myjar.jar 

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

docker run -it {INSERT Denviroment here} myDockerImage 
+0

@downvoters请解释一下,或提供答案 – feco

回答

11

使用您传递到对java命令容器中的变量:

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

你也可以使用下面的start.sh入口点为泊坞容器,确保使用数组语法,例如:

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 [email protected] 

然后,你可以直接通过Java系统属性到您的应用程序运行搬运工集装箱参数:

docker run myDockerImage "-Dvar=var1"