是否可以在同一个 Cloud Run 服务中部署两个不同的 docker 镜像

Posted

技术标签:

【中文标题】是否可以在同一个 Cloud Run 服务中部署两个不同的 docker 镜像【英文标题】:Is it possible to deploy two different docker images within the same Cloud Run service 【发布时间】:2021-05-27 16:49:30 【问题描述】:

我构建了一个应用,它使用两个自制的微服务,每个微服务都有自己的 Dockerfile。 当我在本地构建它时,出于实际原因,我使用 docker-compose。

目前,当我部署到 Cloud Run 时,我使用类似的命令

docker tag xxx docker push xxx 然后我选择要部署在 Cloud run 上的镜像

据我了解,docker-compose build 只构建了两个映像(每个 Dockerfile 一个)并将它们放置在同一个网络中,从而允许这两个 API 之间的一些实际连接。

是否可以在 Cloud Run 中执行类似的操作,而无需将每个映像部署到不同的服务上?

PS:出于业务原因,我无法将代码直接托管在 Cloud Source Repositories 上,它必须在 Azure 上

【问题讨论】:

【参考方案1】:

无法将 2 个不同的 Docker 映像部署到 Cloud Run。

Cloud Run 的工作方式如下:

    您构建一个容器映像并上传到 Google Container Registry

    使用容器映像部署到 Cloud Run。

    您的服务会根据您的传入请求自动扩展和缩减到特定数量的容器实例。每个容器都会运行容器镜像。

摘要 = Cloud Run 获取用户的容器并在 Google 基础架构上执行它,并处理该容器的实例化(扩展)。

请注意,Cloud Run 旨在运行网站REST APIs 后端后台管理 等,它不支持微服务架构(不同的服务器在不同的容器中运行)。

对于您的场景,您可以在 Cloud Run 中部署多个服务或使用其他 Google Products,例如 Cloud SQL、Datastore、Spanner 或 BigTable。

注意:您可以在同一个服务中部署 2 个容器,但是您可以部署一个包含多个进程的容器,如 article written by a Googler

中所述

【讨论】:

以上是关于是否可以在同一个 Cloud Run 服务中部署两个不同的 docker 镜像的主要内容,如果未能解决你的问题,请参考以下文章

如何在已部署的 Cloud Run Service(托管)中使用 Google Secret?

使用自定义服务帐号部署到 Cloud Run 失败并出现 iam.serviceaccounts.actAs 错误

如何验证我的 Cloud Run 服务以访问 GSuite 用户的 gmail 消息?

Google Cloud Run 与本地机器相比非常慢

使用 OpenTelemetry 在 Google Cloud Run 上跟踪传播

如何为 Cloud Build 用于 Cloud Run 部署的 Cloud Storage 存储分区指定区域?