【问题标题】:Is it possible to run Postgres (or any DB) with Google Cloud Run?是否可以使用 Google Cloud Run 运行 Postgres(或任何数据库)?
【发布时间】:2020-01-11 20:10:50
【问题描述】:

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

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

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

我正在寻找一种可以维护数据库状态的有状态云运行。

【问题讨论】:

  • 如果成本是我的主要因素并且我的数据需求最小,我会使用 Debian 创建一个 Compute Engine F1-micro 实例并安装 PostgreSQL。我会在需要时启动和停止实例。每月 6.00 美元 24x7 运行,外加数据传输费用,不包括这适合免费套餐,因此成本为零。
  • 我写了一篇关于如何在 Compute Engine 的容器中廉价托管 Postgres 的博文:joncloudgeek.com/blog/…

标签: google-cloud-platform google-cloud-run


【解决方案1】:

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

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

【讨论】:

  • 如果您想要数据库 OnDemand,请查看 Firestore。但它是面向文档的,而不是关系型的,而且逻辑(和查询功能)也不相同。
猜你喜欢
  • 2019-10-26
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 2020-03-17
  • 2020-05-17
相关资源
最近更新 更多