首页 > 解决方案 > 谷歌云运行容器网络

问题描述

我在 docker 容器中有一个应用程序/服务系统,当我使用 docker-compose 启动它们时,使用桥接网络相互通信。

工人启动并向经理注册。经理分配工人工作。为了做到这一点,工人需要知道经理在哪里,经理需要知道工人在哪里。

我想将它们全部部署到 Google Cloud Run。

目前,通过 docker-compose 在 docker 中,它们使用容器名称相互通信。例如,worker 可能会调用:http://manager:5000/register?name=worker1&port=5000在启动时注册,然后 manager 可以调用http://worker1:5000来发送工作。这一切都要归功于它们连接到同一个桥接网络这一事实。

这如何与 Google Cloud Run 配合使用?据我所知,当您创建与容器链接的服务时,您将获得一个永久 URL,以便在应用启动后与它进行通信。容器中的应用程序不知道 URL 是什么。

我可以使用服务名称以与 docker bridge 网络相同的方式相互通信吗?

标签: dockernetworkinggoogle-cloud-run

解决方案


事实上,你不能以与工人相同的方式进行编排。实际上,Cloud Run 服务会回复 HTTP 请求。生成实例时,没有向管理器注册。

如果要并行执行多个任务,请执行多个 HTTP 请求。

如果要在同一服务的不同实例之间进行强隔离,请将并发参数设置为 1(服务实例同时处理 1 个 HTTP 请求)。

有关信息,您最多可以为同一服务拥有 100 个实例。

因此,部署一个管理器服务和一个工作器服务。管理器服务使用正确的参数向工作人员执行 HTTP 请求,以完成正确的工作。

注意工作时间。目前,超时时间最长可以设置为 900 秒(15 分钟)

关于命名,模式如下:https://<service-name>-<project-hash>.run.app/


推荐阅读