将参数传递给docker入口点

时间:2016-07-19 21:34:31

标签: 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.sh的情况下为java做动态参数? (作为-Dversion=$version或其他人)

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

--entrypoint something无法使用Docker 1.11;(

1 个答案:

答案 0 :(得分:10)

您可以在docker run ...的末尾附加动态参数。您尚未指定任何CMD指令,因此它可以正常工作。

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

ENTRYPOINT CMD(它连接起来,中间有空格)

所以你也可以使用像

这样的东西
...
ENTRYPOINT ["java", "-jar", "my_app.jar"]
CMD ["--spring.config.location=classpath:/srv/app/configs/application.properties"]

表示使用时

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

它将使用不同的属性文件和名为version的系统属性运行(覆盖默认情况)