【问题标题】:External properties file using Spring Boot and Docker使用 Spring Boot 和 Docker 的外部属性文件
【发布时间】:2016-09-15 01:10:54
【问题描述】:

我无法配置 Dockerfile 以在 Spring Boot 中使用外部属性文件。这是我的 Dockerfile:

FROM java:8-jre 
VOLUME /tmp /var/gpm/config
ADD gpm-web-1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-cp","/var/gpm/config","-Dspring.config.location=classpath:application.properties","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

在我的主机中,我有这个属性文件的路径:/var/gpm/config/application.properties

但是,不工作。

更新

我通过以下方式更改 Dockerfile:

FROM java:8-jre
VOLUME /tmp
ADD gpm-web-1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.config.location=file:/conf/application.properties"]

然后运行:

docker run -d -p 8080:8080 -v /opt/gpm/config/application.properties:/conf/application.properties --name gpm gpm-web:1.0

但是,文件就像一个文件夹:

root@b7349202b6d3:/# ls -la /conf/
total 8
drwxr-xr-x  3 root root  4096 May 18 16:43 .
drwxr-xr-x 74 root root  4096 May 18 16:55 ..
drwxr-sr-x  2 root staff   40 May 18 16:43 application.properties 

【问题讨论】:

  • 你有没有在运行时猛击容器并检查文件是否在卷中可用?
  • 你好!挂载的文件夹,但是文件夹是空的,看不到application.properties文件。
  • 使用 docker inspect 命令并检查 Mounts
  • 我更新了这篇文章,inspect 命令显示:"Mounts": [ { "Source": "/opt/gpm/config/application.properties", "Destination": "/conf/application .properties", "Mode": "", "RW": true }
  • ls -la /conf/ 你在哪里执行的?所以它似乎可用,你之前说文件夹是空的

标签: java docker spring-boot dockerfile


【解决方案1】:

我认为您只需要将卷安装到 conf 文件夹,例如

docker run -d -p 8080:8080 -v /opt/gpm/config:/conf --name gpm gpm-web:1.0

【讨论】:

    【解决方案2】:

    最后,问题在于要挂载到 Docker 容器中的文件的权限。如果在主机中找不到原始文件,Docker 会创建一个目录。

    感谢@Shibashis 的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-30
      • 2018-08-01
      • 2018-02-21
      • 2015-06-26
      • 1970-01-01
      • 2015-05-14
      • 2017-08-18
      相关资源
      最近更新 更多