首页 > 解决方案 > Cloud Run - 我的应用程序每天都需要新的数据库文件

问题描述

我有一个 dockerized Spring Boot 应用程序,想在 Cloud Run 中运行它。问题是我需要每天更新 db 文件(大约 1MB)。

我有什么选择?

你怎么看?

标签: spring-bootgoogle-cloud-platformgoogle-cloud-run

解决方案


如果您想保持代码原样,您的解决方案是每天构建一个新容器。如果你正确定义了你的 Dockerfile,它就没有那么危险了。实际上,在之前执行所有构建步骤,并且只在容器的最新层上添加 db 文件。

就像这样,每天,当您构建容器时,如果前一层保存在缓存中(取决于您的 CI/CD 平台),则只会替换最新的层,并且容器会像这样构建。你的代码不会改变,你不应该有打包和部署的风险。


您将 db 文件放在 Cloud Storage 上的想法不太好。当然你有一个版本问题,但你也有一个冷启动问题。实际上,当您的 Cloud Run 实例启动时,它必须先下载文件,然后再执行正常启动。Spring Boot 在 Cloud Run 上启动已经很慢了,在这种冷启动上添加外部依赖和下载延迟并不是一个好主意。


如果您可以处理您的代码,.db 文件意味着您有一个 SQL 数据库(我不知道是哪一个,可能是 DB2 或 SQLite)。如果你使用抽象层,比如 Hibernate,很容易切换到另一个 db 引擎,例如使用 Cloud SQL MySQL 实例。

当然,成本不一样,但更容易管理 Cloud Run 部署。但是,您仍然需要创建一个流程(CI/CD 作业?)来更新和部署 Cloud SQL 上的新数据。版本控制也是一个问题(即使您可以在 CI/CD 管道中手动执行快照以在导入新数据之前保存 Cloud SQL 数据。


推荐阅读