我有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;(
答案 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
的系统属性运行(覆盖默认情况)