【发布时间】:2016-07-19 22:32:09
【问题描述】:
我正在构建一个 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? -
抱歉回复太早了。我猜你的意思是我在
exec之后在哪里运行到容器中,对吗?我是在/app下运行的,所以我手动运行的cmd就是java -jar myapp.jar -
哦,只是快速尝试在其他地方运行 cmd,然后它没有使用安装在配置中。所以我想问题是我没有完全理解 Spring Boot 如何获取外部配置的用法。
标签: docker spring-boot