在docker-compose.yml中绑定主机端口时,无法将服务扩展到多个容器

sur*_*ade 8 networking docker docker-compose

微服务在一个容器上运行.我已将该服务绑定到主机端口8082并使用启动此微服务docker-compose.现在我想使用docker-compose scale命令将其缩放到3个容器但是它给了我以下错误 -

错误:for 2无法在网络上创建端点composetest_nginx_2 composetest_default:绑定0.0.0.0:8082失败:端口已经分配

错误:3无法在网络composetest_default上创建端点composetest_nginx_3:绑定0.0.0.0:8082失败:端口已分配

这会是什么解决方案?

Tom*_*mmy 10

您不应该将3个容器的端口绑定到主机中的同一端口.

您可以做的是设置:

  • 1个负载均衡器容器(将容器的端口XXXX绑定到主机的端口8082)

  • 3个服务容器(将端口暴露给负载均衡器)

bind仅将1个端口绑定到主机.并且expose只将端口暴露给链接容器,以便它们可以来自多个容器.

参考:

https://www.brianchristner.io/how-to-scale-a-docker-container-with-docker-compose/

https://github.com/vegasbrianc/docker-compose-demo/blob/master/docker-compose.yml


小智 6

我通过使用正确的语法传递端口范围来解决它:P

ports:
      - "9110-9120:3333"
Run Code Online (Sandbox Code Playgroud)