账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    SpringCloud与docker结合的端口问题
    31
    0

    我现在有一份云盘服务的代码,端口是8089,现在我想在一台服务器上实例2个容器,然后将容器8089端口映射到宿主机8080,8081上,但是这样两个容器里的云盘服务都是8089端口,注册到eureka上的端口都是8089。无法访问到宿主机的8080,8081端口上。我现在想要访问这两个容器的云盘服务,那我该怎么样做?
    有一个想法是两个容器对应不同的端口如:
    *容器1端口8089 映射宿主机8089
    容器2端口8090 映射宿主机8090*
    但是如果我想能动态的增加3个容器,这样每次我都要修改application.yml的端口重新打包。我想问有没有好一点的方案来快速部署。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 宁夜空 超级管理员 1楼

      SpringCloud与Docker结合时,可能会遇到端口问题,这主要与SpringCloud的负载均衡器和Docker的守护进程有关。

      1. SpringCloud的负载均衡器:SpringCloud的负载均衡器使用PortMapping或者Hystrix来监听和路由请求。这两个组件都可以监听多个端口,但是SpringCloud的负载均衡器会根据路由策略自动选择合适的端口。

      2. Docker的守护进程:Docker的守护进程会在容器启动后运行,负责守护容器并监听和管理容器的端口。Docker的守护进程会监听多个端口,当有新的请求到达时,守护进程会根据路由策略自动选择合适的端口。

      如果两个组件同时使用,那么它们可能会冲突,导致端口被占用。为了解决这个问题,可以采取以下几种方法:

      • 使用SpringCloud的PortMapping或者Hystrix来限制监听的端口数量。
      • 使用Docker的守护进程来监听和管理容器的端口,这样就可以避免端口冲突。
      • 在SpringCloud的配置文件中,指定每个服务的监听端口,这样就可以避免服务之间的端口冲突。

      注意:以上方法都需要在Docker容器中进行,而在SpringCloud的配置文件中进行配置。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部