我正在构建一个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?
答案 0 :(得分:2)
application.properties
子目录中的/config
的 Spring Boot searches(以及其他位置)。在您的情况下,当前目录为/
(默认码头),因此您需要将其更改为/app
。为此,请添加
WORKDIR /app
在ENTRYPOINT
行之前。
回答你原来的问题:在容器内的任何东西运行之前完成安装。