我在构建Docker镜像以运行基于Spring Boot的应用程序。我希望让用户能够通过将包含application.properties的文件夹挂载到容器中来提供运行时属性文件。这里是我的Dockerfile,码头安装发生在执行入口点之前或之后
FROM java:8
RUN mkdir /app
RUN mkdir /app/config
ADD myapp.jar /app/
ENTRYPOINT ["java","-jar","/app/myapp.jar"]
当蹬掉的容器中,我运行此,
docker run -d -v /home/user/config:/app/config myapp:latest
其中/home/user/config
包含application.properties
我想在运行时jar文件回暖。
然而,这并不起作用,应用程序运行并没有拿起这个挂载的属性文件,而是使用装在jar中的默认文件。但是,当我将exec
放入启动容器并再次手动运行入口点cmd时,它会按照预期方式运行我装入的文件。所以我想知道这是与mount如何与入口点一起工作的相关内容?或者我只是没有正确地为这种情况编写Dockerfile?
当您手动运行它时,您从哪个目录运行它? '/'还是'/ app'? – Roman
不好意思回答得太早。我想你的意思是我在'exec'之后运行到容器中的哪个位置?我在'/ app'下运行它,所以我手动运行的cmd只是'java -jar myapp.jar' – Derek
哦,只是简单地尝试在其他地方运行cmd,然后它不使用配置中的挂载。所以我想这个问题是我没有完全理解Spring Boot如何选择外部配置。 – Derek