Docker挂载发生在入口点执行之前或之后

时间:2016-07-19 22:32:10

标签: docker spring-boot

我正在构建一个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文件在运行时获取。

但是这不起作用,app运行不会获取这个已安装的属性文件,它使用jar中包含的默认文件。但是当我exec进入已启动的容器并再次手动运行入口点cmd时,它会通过拾取我挂载的文件按预期工作。所以我想知道这与mount如何与入口点一起工作有关吗?或者我只是没有为这种情况正确编写Dockerfile?

1 个答案:

答案 0 :(得分:2)

当前目录application.properties子目录中的/config

Spring Boot searches(以及其他位置)。在您的情况下,当前目录为/(默认码头),因此您需要将其更改为/app。为此,请添加

WORKDIR /app

ENTRYPOINT行之前。

回答你原来的问题:在容器内的任何东西运行之前完成安装。