2016-07-19 21 views
0

我在构建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?

+0

当您手动运行它时,您从哪个目录运行它? '/'还是'/ app'? – Roman

+0

不好意思回答得太早。我想你的意思是我在'exec'之后运行到容器中的哪个位置?我在'/ app'下运行它,所以我手动运行的cmd只是'java -jar myapp.jar' – Derek

+0

哦,只是简单地尝试在其他地方运行cmd,然后它不使用配置中的挂载。所以我想这个问题是我没有完全理解Spring Boot如何选择外部配置。 – Derek

回答

1

春季启动searchesapplication.properties一个/config子目录当前目录(其它位置之间)内。在你的情况下,当前目录是/(码头默认),所以你需要将其更改为/app。要做到这一点,请添加

WORKDIR /app 

之前的ENTRYPOINT行。


并回答您的原始问题:挂载在容器内的任何内容运行之前完成。

+0

是的,只是做到了这一点,它的工作原理。应该仔细阅读文档页面。非常感谢您的快速帮助! – Derek

相关问题