【问题标题】:How to deploy spring boot application without changing records on database on kubernetes?如何在不更改 kubernetes 数据库记录的情况下部署 Spring Boot 应用程序?
【发布时间】:2021-11-15 07:40:42
【问题描述】:

我有一个 Spring Boot 应用程序,它充当 REST API,它使用 JPAHibernate 将对象映射到 PostgreSQL强>数据库表。我希望在 Kubernetes 上发布我的应用程序。整个应用程序是使用工具 docker-compose 构建的,然后使用工具 Kompose 进行转换。有时对象模型会更改,因此该对象的数据库表模式。在不更改记录或丢失用户数据或避免任何数据库冲突的情况下,将我的应用程序和新数据库架构部署到 Kubernetes 的最佳做法是什么?

【问题讨论】:

标签: postgresql spring-boot kubernetes docker-compose kompose


【解决方案1】:

您应该禁用休眠模式创建以确保它不会删除数据。

接下来,您应该调查 Liquibase https://www.liquibase.org/ 或 Flyway https://flywaydb.org/ 是否适合您的用例,将迁移作为应用程序的一部分进行捆绑。

【讨论】:

  • 所以对于 liquibase,我测试了它做了一个连接到 postgresql 数据库的小项目,我对其中一个列进行了修改,作为场景删除列的示例 first 与 first_name 然后同步了 liquibase 数据,但它不应用更新。我确实看到了 first_name 列,但它的值为空。那么 liquibase 不备份数据,也无法将数据从旧列传输到新列?
  • 没错,您需要创建一个自定义迁移,通过复制数据或 - 甚至更好地 - 重命名列而不是创建新列来尊重您的意图
  • @我尝试了 liquibase,但是当代码被推送时,我有一个 gitlab-runner,它构建一个新的 docker 镜像并将其推送到容器注册表,然后它将 docker 镜像与 Kompose 到 Kubernetes 工件,但是数据库的 docker 容器将被丢弃在 pod 中,那么如何解决这个问题?
猜你喜欢
  • 2017-03-13
  • 2021-06-04
  • 2021-11-16
  • 2019-05-01
  • 2019-10-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
相关资源
最近更新 更多