如何将 application.properties 传递给 Docker 容器中的 Spring Boot 应用程序?

Posted

技术标签:

【中文标题】如何将 application.properties 传递给 Docker 容器中的 Spring Boot 应用程序?【英文标题】:How to pass application.properties to SpringBoot app in Docker container? 【发布时间】:2021-03-21 18:23:55 【问题描述】:

假设我们有一个简单的Dockerfile,其中my_sb_app.jar 是一个SpringBoot 应用程序:

FROM bellsoft/liberica-openjdk-alpine:11.0.9-12    
WORKDIR /app    
COPY target/my_sb_app.jar /app    
EXPOSE 8080    
ENTRYPOINT java -jar my_sb_app.jar

我想在每次运行时传递自定义 app.properties

docker run  my_image_name  /somewhere/on/my/host/app.properties

因此预期的最终命令(在容器内)可能与以下命令相同

java -jar my_sb_app.jar --spring.config.location=%%file_with_contents_of_app.properties%%

将文件传递到 Docker 容器的标准方法是什么? 如何更改 Docker 映像?

【问题讨论】:

【参考方案1】:

将文件从主机传递到容器的标准方法是使用卷:

https://docs.docker.com/storage/bind-mounts/

https://docs.docker.com/storage/volumes/

在你的例子中:

docker run -v /somewhere/on/my/host/app.properties:/opt/app.properties my_image_name 

java -jar my_sb_app.jar --spring.config.location=/opt/app.properties

【讨论】:

以上是关于如何将 application.properties 传递给 Docker 容器中的 Spring Boot 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

未从 application.properties 中提取 Spring Boot JOOQ sql 方言

Spring boot 的 properties 属性值配置 application.properties 与 自定义properties

Jar不包含我的课程文件gitlab-ci

logback-结合spring profile使用

日志记录:在 Spring Boot 中使用 log4j2.properties 文件实现 Log4j2

如何将thinkcmf导入eclipse