我在docker容器中有一个应用程序/服务系统,当我使用docker-compose提出应用程序/服务时,会使用网桥网络相互交谈。
工人启动并向经理注册。经理分配工人要做的工作。为此,工人需要知道经理在哪里,经理需要知道工人在哪里。
我想将它们全部部署到Google Cloud Run。
目前,在docker中,通过docker-compose,他们使用自己的容器名称相互交谈。例如,工作人员可以致电:http://manager:5000/register?name=worker1&port=5000
在启动时注册,然后经理可以致电http://worker1:5000
发送工作。全部归功于它们连接到同一网桥网络的事实。
这如何与Google Cloud Run一起使用?据我所知,当您创建与容器链接的服务时,您将获得一个永久URL,以便在应用启动后与其进行通信。容器中的应用程序不知道URL是什么。
我可以使用服务名称以与docker网桥相同的方式相互通信吗?
答案 0 :(得分:1)
实际上,您无法以相同的方式来协调工作人员。实际上,Cloud Run服务会回复HTTP请求。生成实例后,就不会向管理者注册。
如果要并行执行多个任务,请执行几个HTTP请求。
如果要在同一服务的不同实例之间实现强烈隔离,请将并发参数设置为1(该服务的实例在同一时间仅处理1个HTTP请求)。
有关信息,同一服务最多可以有100个实例。
因此,部署经理服务和辅助服务。经理服务向具有正确参数的工作人员执行HTTP请求,以执行正确的工作。
照顾工作时间。目前,最多可以将超时设置为900秒(15分钟)
关于命名,模式如下:https://<service-name>-<project-hash>.run.app/
答案 1 :(得分:1)
Cloud Run当前不支持项目中其他服务的基于主机名的服务发现。
当前,最好的选择是使用环境变量或类似的东西配置应用程序依赖的服务URL。