如何对具有多个数据源的 Spring Boot 应用程序进行 dockerize?

2024-01-12

我有一个 springboot 应用程序,它使用 postgresql 数据库和 mongoDB 数据库,我已经能够正确配置它们,但现在当我想对我的应用程序进行 dockerize 以便稍后将其部署到 Kubernetes 集群上时,我完全无能为力。大多数 youtube 教程和文章都是关于如何 dockerize 简单的 springboot 应用程序或仅使用一个数据库的 springboot 应用程序,因此任何有关如何继续 dockerize 我的应用程序的输入将非常感激!

编辑: 我正在关注这个教程 -https://www.section.io/engineering-education/running-a-multi-container-springboot-postgresql-application-with-docker-compose/ https://www.section.io/engineering-education/running-a-multi-container-springboot-postgresql-application-with-docker-compose/

在 docker-compose.yml 文件中 -

version: '3.1'
services:
  API:
    image: 'blog-api-docker.jar'
    ports:
      - "8080:8080"
    depends_on:
      PostgreSQL:
        condition: service_healthy
    environment:
      - SPRING_DATASOURCE_URL=jdbc:postgresql://PostgreSQL:5432/postgres
      - SPRING_DATASOURCE_USERNAME=postgres
      - SPRING_DATASOURCE_PASSWORD=password
      - SPRING_JPA_HIBERNATE_DDL_AUTO=update

  PostgreSQL:
    image: postgres
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_PASSWORD=password
      - POSTGRES_USER=postgres
      - POSTGRES_DB=postgres
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

仅定义了一个 postgreSQL 数据源,在我的项目中,它具有教程中给出的类似 postgreSQL 数据源,我还使用在 atlas 上运行的 mongoDB 数据库。 我还包括我的 application.properties 文件供您参考-

    spring.ds-psql.datasource.jdbcUrl=jdbc:postgresql://localhost:5432/devicestatspsql
    spring.ds-psql.datasource.username=
    spring.ds-psql.datasource.password=
    
    spring.data.mongodb.users-mongo-atlas.uri=*mongodb database url here*

    spring.jpa.generate-ddl=true
    spring.jpa.show-sql=true

所以我只需要知道 docker-compose.yml 文件中需要进行哪些更改才能在 docker 映像中容纳此 mongodb 数据库


您可以使用 Kubernetes配置图 https://kubernetes.io/docs/concepts/configuration/configmap/ and Secret https://kubernetes.io/docs/concepts/configuration/secret/截至目前存储您的应用程序的配置。

Configmap 和 Secret 主要用于存储数据库连接字符串、用户名和密码等配置。

您可以根据 Dev、Stag 和 Prod 的要求创建不同的配置映射,然后将特定的配置映射注入您的部署,以便应用程序将从其中之一获取这些值.env文件或来自OS environment.

这是参考article https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/.

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

如何对具有多个数据源的 Spring Boot 应用程序进行 dockerize? 的相关文章

随机推荐

  • 哪个 .NET 库具有写时复制集合?

    我正在搜索要在 C 程序中使用的 NET 写时复制集合 例如列表 字典等 哪些集合具有该属性 包括参考FSharp Core 然后你就可以访问多种不可变的集合 Set List Map etc 这些位于Microsoft FSharp Co
  • 如何在 Google Test 中使用不同模板测试多个模板类的相同行为?

    我正在练习 C 17 中的排序算法 并按如下方式实现了我的单元测试 以下编译和所有测试都是绿色的 template
  • Funq IoC 容器是否支持属性注入?

    我正在寻找一个 IoC 容器在我的 Compact Framework 应用程序中使用 尝试 Funq 我发现我找不到用它进行属性注入的方法 我浏览了该项目网站上的讨论及其单元测试 但我找不到任何属性注入的示例 Funq 支持属性注入吗 嗯
  • Django 迁移到新数据库

    我刚刚加入一个使用 Django 的项目 并尝试初始化我自己的开发服务器 当我尝试这样做时 我的一个应用程序的迁移失败 此应用程序的模型有一个 sorl thumbnail ImageField 用于添加徽标 尝试迁移时 我收到以下错误消息
  • [over.load]/1 中下面突出显示的句子是什么意思?

    下面突出显示的句子的含义是什么 它与函数模板有什么关系吗 过载 1 http eel is c draft over load 1 并非所有函数声明都可以重载 那些不能成为的 此处指定了重载 如果程序包含以下内容 则该程序是格式错误的 同一
  • ::after 伪元素出现在之前

    我试图在渐变的顶部和底部创建一个微妙的波浪 但是 after 伪元素出现在主要内容之前而不是之后 目前它显示为 before after 主要内容 但我希望它显示为 before 主要内容 after 这是我的代码 gradient bac
  • couchDB、python 和身份验证

    我已经安装了 couchDB v 0 10 0 并尝试通过从 couchDB wiki 下载的 Couch 类中的 python 与它对话 问题是 Create database mydb error unauthorized reason
  • 对“omp_get_max_threads_”的未定义引用

    我在尝试编译项目时遇到以下错误 fortran 使用 gfortran 对 omp get max threads 的未定义引用 对 omp get thread num 的未定义引用 问题是 我的 GCC 版本是 4 4 3 它应该支持
  • 运行 Julia .jl 文件

    我是朱莉娅的新手 刚刚完成了我的第一个程序 我在 julia studio 中编写了代码 并在该程序中对其进行了测试 它为我提供了所有正确的输出 但 shell 将输出分开 就好像它是两个不同的执行一样 我想知道这是否是我的编译器的问题 所
  • R ggplot2 对只有几个数据点的线图进行轻微平滑

    不确定这是否是一个编程问题 如果我有下面的数据 它会生成一个 尖峰 图表 并且我想使用 ggplot2 生成一个稍微平滑的图表 我该如何最优雅地处理它 通常的平滑方法去除了太多信息 我正在考虑的一种方法是在当前数据集之间插入额外的两个数据点
  • 使用空手道框架时,如何有选择地忽略构建中的某些 .feature 文件?

    我必须忽略使用空手道框架的集成测试套件的某些 feature 测试文件 有什么方法可以有选择地排除某些文件 是的 答案是tags https github com intuit karate test suites Example igno
  • 制作Asus google Nexus 7的模拟器

    我有 android sdk 更新到最新版本 v21 现在我想要的是 制作 Asus google Nexus 7 的模拟器 包含 800 x 1280 分辨率和 216 dpi 当我将 sdk 更新到最新版本时 我无法编辑模拟器当前的 d
  • JSP 自定义标记中的 i18n 翻译

    是否可以编写自定义 JSP 标记来获取 i18n 消息键并输出给定 请求的翻译短语 通常在 JSP JSTL 中 我这样做
  • Google Spell API 和 TinyMCE

    我刚刚使用说明成功实现了 TinyMCE 的拼写检查插件here http ondotnet deap nu 2009 01 implementing tinymce spellchecker with html 不过 我对这个结尾段落感到
  • 在泛型类中使用泛型协议

    我定义了一个协议LLNodeType protocol LLNodeType typealias T var firstNode LLNode
  • knitr 被 data.table `:=` 赋值欺骗

    看起来knitr不明白DT a 1 不应导致输出DT到文档 有办法阻止这种行为吗 Example knitr文档 Data Table Markdown Suppose we make a data table in R Markdown
  • 错误:无法扩展文件“pg_tblspc/4815857/PG_11_201809051/16321”:设备上没有剩余空间

    My postgres table occupied 100 memory并想截断它 当我使用时TRUNCATE TABLE TABLE NAME它给出的声明如下错误 错误 无法扩展文件 pg tblspc 4815857 PG 11 20
  • Laravel 上的用户名作为子域

    我已经设置了通配符子域 domain com 我正在使用以下 htaccess Options FollowSymLinks RewriteEngine On RewriteBase RewriteCond HTTP HOST www Re
  • 在 LibGDX 中将形状绘制为纹理

    我正在游戏中创建菜单 特别是带有圆角和边框的矩形 我可以使用形状渲染器来做到这一点 但我不能混合形状渲染器和精灵批处理器 目前我的分辨率似乎是使用大形状如 PNG 并缩放它们 但在很多设备上这会产生模糊的角落 我已经阅读了关于网格 着色器
  • 如何对具有多个数据源的 Spring Boot 应用程序进行 dockerize?

    我有一个 springboot 应用程序 它使用 postgresql 数据库和 mongoDB 数据库 我已经能够正确配置它们 但现在当我想对我的应用程序进行 dockerize 以便稍后将其部署到 Kubernetes 集群上时 我完全