docker-compose - 外部化 spring application.properties

2023-12-25

我有一个 Spring Boot 应用程序,它连接到 mongo 数据库并使用 docker 部署该应用程序。我正在使用这个 docker-compose.yml 文件,它工作正常:

version: '2'
services:
  db:
      container_name: app-db
      image: mongo
      volumes:
        - /data/db:/data/db
      ports:
        - 27017:27017
  web:
    container_name: spring-app
    image: spring-app
    depends_on:
      - db
    environment:
      SPRING_DATA_MONGODB_URI: mongodb://db:27017/appDB
      SPRING_DATA_MONGODB_HOST: db
    ports:
      - 8080:8080

目前,该应用程序正在使用嵌入在 spring 应用程序 docker 映像 (spring-app) 中的 application.properties 文件。如何使用 docker-compose 外部化/传入 application.properties 文件?

感谢您的帮助


您必须根据您的要求使用 Spring 配置文件来定义环境变量。

server:
    port: 9000
---

spring:
    profiles: development
server:
    port: 9001

---

spring:
    profiles: production
server:
    port: 0

参考:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-change-configuration-depending-on-the-environment https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-change-configuration-depending-on-the-environment

您可以定义在运行时需要选取哪个配置文件。

version: '2'
services:
  db:
      container_name: app-db
      image: mongo
      volumes:
        - /data/db:/data/db
      ports:
        - 27017:27017
  web:
    container_name: spring-app
    image: spring-app
    depends_on:
      - db
    environment:
      SPRING_DATA_MONGODB_URI: mongodb://db:27017/appDB
      SPRING_DATA_MONGODB_HOST: db
      SPRING_PROFILES_ACTIVE=development
    ports:
      - 8080:8080

但是,如果配置发生不理想的更改,这将要求您重建 docker 映像。 Spring Cloud Config (Vault) 就派上用场了,它可以帮助您外部化您的配置。

http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.0.RELEASE/ http://cloud.spring.io/spring-cloud-static/spring-cloud-config/1.3.0.RELEASE/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-compose - 外部化 spring application.properties 的相关文章

随机推荐

  • SimpleQueue 与 Python 中的队列 - 使用 SimpleQueue 的优点是什么?

    The queue 同步队列类 https docs python org 3 library queue html只是简单地指出 SimpleQueue 允许的函数较少 我需要用于多线程应用程序的非常基本的队列功能 使用 SimpleQu
  • Java中如何信任证书颁发机构?

    我的应用程序连接到 SSL Web 服务 该服务使用证书来验证其身份 最近 该证书发生了变化 由于它不是由受信任的机构签名的 因此我的部分应用程序失败了 为了防止将来出现这种情况 该服务的建议是我应该开始信任现有证书的签名机构 而不是单个证
  • iPhone 特别分配为团队管理员并拥有团队代理证书?

    我是我们公司 ADC 上 iPhone 项目的团队管理员 但不是团队代理 团队代理 作为一个单独的人 能否为我提供一份分发配置文件的副本 我可以将其与 XCode 一起使用来创建临时构建 这是因为团队代理人员不是技术人员 但他们是报名参加该
  • 包含函数的 JSON

    我有一个网站 它返回类似 JSON 的数据结构 如下所示 name tom jones no 123 storedproc function callbuyer 0123 我正在使用这些数据 ajax 数据类型为 JSON 不幸的是 我的
  • WCF:FaultContract(typeof(ExceptionDetail))问题

    我已经把属性 FaultContract typeof ExceptionDetail 为我的运营合同 当我尝试将服务添加到客户端应用程序时 出现此错误 Custom tool error Failed to generate code f
  • WebAPI ModelBinder 错误

    我已经实现了ModelBinder但它是BindModel 方法未被调用 我收到错误代码 500 并显示以下消息 Error 不能 从 MyModelBinder 创建一个 IModelBinder 请确保它派生 来自 IModelBind
  • 骆驼路线和终点

    我一直在仔细研究 Apache Camel 文档 试图对其两个最重要的内容有具体的了解basic概念 端点和路由 尽管这些术语在整个文档中随处可见 但我找不到任何参考资料来实际定义它们是什么以及它们的用途 尽管他们的名字听起来相当明显 而且
  • 单击 Command 键不会打开新选项卡,但单击中键可以打开新选项卡

    在我的网站上 这是一个使用 Sammy js 和 jQuery 的单页 JS 网站 当我用鼠标中键单击链接时 该链接会在新选项卡中打开 但当我在 Mac 上按住命令单击时 却没有 这种情况在 Firefox 和 Chrome 中都会发生 所
  • 反向代理 websocket IIS

    我想在 Windows 上使用 IIS 代理 websocket 因此 我在 Winserver 2012 中设置了 IIS 8 用于反向代理 Websocket 服务器应用程序 但我不知道如何配置IIS 只有 HTTP 和 HTTPS 的
  • 使用堆栈检查给定字符串是否为回文[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Folks 我最近接受采访并被问到一个关于回文的问题 给定一个字符串 可能代表一个日期 检查它是否是一个 回文或不使用堆栈 我试图想出解决
  • Azure API 管理导入 API 总是显示:具有指定名称的 API 已存在

    我正在尝试使用 swagger 将我拥有的 API 导入到 Azure API 管理中 应该相当简单 但我总是遇到相同的错误 一个或多个字段包含不正确的值 具有指定名称的 API 已经存在 我还没有在 Azure API 管理中进行任何设置
  • C#/.NET - 自定义二进制文件格式 - 从哪里开始?

    我需要能够以自定义二进制文件格式存储一些数据 我以前从未设计过自己的文件格式 它需要是一种在 C Java 和 Ruby Perl Python 世界之间移动的友好格式 首先 文件将包含记录 GUID 字段和 JSON YAML XML 数
  • CUDA 写入常量内存错误值

    我有以下代码从主机变量复制到 constant CUDA 中的变量 int main int argc char argv int exit code if argc lt 4 std cout lt lt Usage n lt lt ar
  • 如何使用Retrofit在android中传递图像?

    您好 我正在使用改造上传图像文件 任何人都可以知道如何通过 您需要在改造中传递 multipart 对象 MultipartBody Part carImage null if TextUtils isEmpty imagePath Fil
  • 对象没有属性“assertEqual”

    当我尝试在代码中使用以下语句时 获取对象没有属性 assertEqual self assertEqual IRELAND INSTITUTE OF PITTSBURGH driver find element by id cname ge
  • R 来自 C——最简单的 Helloworld

    用于启动 R 解释器 传入一个小表达式 例如 2 2 并输出结果的最简单的 C 函数是什么 我正在尝试在 Windows 上使用 MingW 进行编译 您想从 C 呼叫 R 吗 Look at 编写 R 扩展 第 8 1 节 http cr
  • 如何从终端编辑 py 文件?

    我在一家VM via PuTTY 通过终端 我想打开 编辑和保存 py文件 我该怎么做 感谢您的帮助 最简单的方法是使用 vim vim your script py 编辑文件并使用 w 或 x 保存 您还可以使用 emacs 或 nano
  • 无法构建 Objective-C 模块“CoreGraphics”

    当我尝试运行任何单元或 UI 测试时 出现以下错误 运行应用程序本身时不会发生 错误信息如下所示 Applications Xcode app Contents Developer Platforms iPhoneSimulator pla
  • 如何在 Sublime Text 中输入任何 Unicode 字符?

    显然 所有这些都是有效的 JavaScript 字符 http codepoints net search gc Nl我想开始使用它们作为 var 名称 但是如何将它们输入到文本编辑器中 我尝试用谷歌搜索 unicode 以及如何输入 un
  • docker-compose - 外部化 spring application.properties

    我有一个 Spring Boot 应用程序 它连接到 mongo 数据库并使用 docker 部署该应用程序 我正在使用这个 docker compose yml 文件 它工作正常 version 2 services db contain