是否可以使用 Google Cloud Run 运行 Postgres(或任何数据库)?

use*_*542 4 google-cloud-platform google-cloud-run

1. 总结问题

Google Cloud Run 宣传它是“无状态容器”。有没有办法运行任何东西,让它在某处保存状态?

我想在容器中运行 Postgres,但只能按需启动,当有请求时启动 PG 容器。

同样的问题也适用于将包含 REST API(Web 服务器)的容器以连接到 PG 容器。

因此,当 Web 应用程序(托管在 Firebase 上)向 REST API(容器)发出请求时,它会启动,然后从 REST api 查询的 PG 实例会启动(或者可以简单地将 DB 、 REST API 在一个容器中)。

对于开发实例,我不希望 24x7x365 的东西几乎什么都不做,只是在开发时间会启动的东西,但是有很多这样的东西,我是唯一的 OPS 人,想要为开发人员自动化它,包括我自己和最小化计费。

任何最好的方法在这里将不胜感激。

2. 提供背景,包括您已经尝试过的内容

我已经创建了 Docker 容器并部署到 Cloud Run

3. 显示一些代码

yum install buildah podman -y
Run Code Online (Sandbox Code Playgroud)

4. 描述预期和实际结果,包括任何错误消息

我正在寻找一种解决方案,以最大限度地减少开发环境的计费,其中包括托管和数据库/REST API(数据库必须是 Postgres)。

我正在寻找将维护数据库状态的有状态云运行。

Dou*_*son 9

Cloud Run 不适合托管数据库。为 Cloud Run 的传入请求分配的服务器实例可以来来去去,并且并非所有请求都会转到同一个实例,这意味着并非所有客户端都会看到相同的数据。这就是“无状态容器”的问题。

如果您想使用 Cloud Run 提供数据库访问,最好将其作为其他一些云托管数据库服务的代理。您可以使用它来托管访问其他一些数据库服务(例如:Cloud Firestore、Cloud SQL)的 REST API 端点。但是将数据库本身托管在您的 docker 映像中是没有意义的,因为这些服务器实例可以不可预测地来来去去,从而破坏存储在每个实例中的任何数据库状态。