可以通过Google Cloud Run运行Postgres(或任何数据库)吗?

时间:2019-09-10 05:29:36

标签: 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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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