gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:16:33 24 4
gpt4 key购买 nike

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

最佳答案

Spring Boot searches application.properties 位于当前目录(以及其他位置)的/config 子目录中。在您的情况下,当前目录是 /(docker 默认值),因此您需要将其更改为 /app。为此,添加

WORKDIR /app

ENTRYPOINT 行之前。


并回答您最初的问题:在运行容器内的任何内容之前完成安装。

关于Docker 挂载发生在入口点执行之前或之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38469569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com