我正在构建一个 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
where /home/user/config
包含application.properties
我希望在运行时获取 jar 文件。
然而这不起作用,应用程序运行不会获取此安装的属性文件,它使用 jar 内打包的默认属性文件。但当我exec
进入启动的容器并再次手动运行入口点cmd,它通过拾取我安装的文件按预期工作。所以我想知道这是否与安装如何与入口点一起工作有关?或者我只是没有为这种情况正确编写 Dockerfile?
春季启动searches https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-application-property-files for application.properties
里面一个/config
的子目录当前目录(以及其他地点)。在你的情况下,当前目录是/
(docker默认),所以你需要将其更改为/app
。为此,请添加
WORKDIR /app
之前ENTRYPOINT
line.
并回答您最初的问题:安装是在容器内的任何内容运行之前完成的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)