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

标签 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 文件。

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

最佳答案

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

WORKDIR /app

ENTRYPOINT 行之前。


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

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

相关文章:

spring-boot - VisualVm : cpu graph pannel show "Not supported for this JVM"

java - jdbcTemplate.getDataSource() 在我的单元测试中始终为 null

Docker Alpine - 启用 GD JPEG 支持

ssl - 使用 nginx 代理后面的 docker 私有(private)注册表 (v2) 的格式错误的 HTTP 响应

amazon-web-services - 创建 ECS 集群时未创建 EC2 实例

Spring Boot,Spring MVC webjars 依赖项返回 404

java - 使用 Spring Boot 设置 DynamoDB

linux - 连接到远程服务器上的 docker 内的 VNC

macos - Kubernetes无法在Mac/Docker上删除图像无法删除图像

java - 无法将我的Spring Boot API连接到MYSQL数据库