将参数传递给docker入口点

kve*_*ldo 5 java docker dockerfile

我有Dockerfile

FROM    java:8
ADD     my_app.jar /srv/app/my_app.jar
WORKDIR /srv/app
ENTRYPOINT ["java", "-jar", "my_app.jar", "--spring.config.location=classpath:/srv/app/configs/application.properties"]
Run Code Online (Sandbox Code Playgroud)

如何./run.sh在没有入口点的情况下为java做动态参数?(作为-Dversion=$version或其他)

我想在启动容器时传递此参数.

--entrypoint something 在Docker 1.11上不起作用;(

Jir*_*ser 11

您可以在结尾添加动态参数docker run ....你没有指定任何CMD指令,所以它会起作用.

在运行时,如果没有在结尾处指定任何命令,实际运行的docker run ...是:

ENTRYPOINT CMD (它是连接的,中间有一个空格)

所以你也可以使用类似的东西

...
ENTRYPOINT ["java", "-jar", "my_app.jar"]
CMD ["--spring.config.location=classpath:/srv/app/configs/application.properties"]
Run Code Online (Sandbox Code Playgroud)

这意味着,使用时

docker run mycontainer

java -jar my_app.jar --spring.config.location=classpath:/srv/app/configs/application.properties

将被调用(默认情况),但在运行时

docker run mycontainer --spring.config.location=classpath:/srv/app/configs/some_other_application.properties -Dversion=$version

它将运行w /不同的属性文件并调用系统属性version(覆盖默认情况)