使用 Spring Boot 和 Docker 的外部属性文件
Posted
技术标签:
【中文标题】使用 Spring Boot 和 Docker 的外部属性文件【英文标题】:External properties file using Spring Boot and 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我认为您只需要将卷安装到 conf 文件夹,例如
docker run -d -p 8080:8080 -v /opt/gpm/config:/conf --name gpm gpm-web:1.0
【讨论】:
【参考方案2】:最后,问题在于要挂载到 Docker 容器中的文件的权限。如果在主机中找不到原始文件,Docker 会创建一个目录。
感谢@Shibashis 的帮助。
【讨论】:
以上是关于使用 Spring Boot 和 Docker 的外部属性文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot 和 Docker 的外部属性文件
Spring Boot 2.0:使用 Docker 部署 Spring Boot
Spring Boot 2.0:使用 Docker 部署 Spring Boot