引入服务发现其实比较简单

项目架构:同Spring cloud alibaba(一)多模块项目整合

  • spring cloud
    - pay
    - smdd
    - coupon
    - base
    - order-goods
    - inventory

在配置文件里面添加如下配置:

spring:
    cloud:
      nacos:
        discovery:
          server-addr: 172.17.xx.xx:8848

这时候就能发现,在我们的nacos上面就可以看到注册的主机了,但是有个问题,我们每个服务有两个服务器上面,导致docker的内网ip一样。因为原来服务之间调用,需要固定http的ip的。所以接下来,要用宿主机的ip来替代docker的ip+端口,以防止nacos上注册的冲突。

这时候需要在Dockerfile上添加【–spring.cloud.nacos.discovery.ip=${ip}】

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom,","-jar","/app.jar","--spring.profiles.active=${env}","--spring.cloud.nacos.discovery.ip=${ip}"]

docker-compose里面添加如下配置:

  coupon:
    image: coupon:1.0
    container_name: coupon
    environment:
      - env=pre
      - ip=${ip}

然后就是docker-compose启动传参;参考:我如何与docker-compose一起传递参数
至此,发现nacos上注册的ip是宿主机的ip

更多推荐