是否可以在同一个 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 消息?