一、问题
在用gitlab集成部署springcloud项目时,每个微服务在容器内建一个独立的网关,部署以后外网是可以访问的。
#用户微服务
version: '3.1'
services:
dexin-service-provider-user:
image: xx.xx.xx.xx:xxxx/dexin-service-provider-user:v1.0.0
container_name: dexin-service-provider-user
ports:
- 10101:10101
networks:
provider-user
networks:
provider-user:
这样经过gitlab集成部署后,通过xx.xx.xx.xx:10101/...是可以访问到服务的。
#同样部署gateway
version: '3.1'
services:
dexin-service-gateway:
image: xx.xx.xx.xx:xxxx/dexin-service-gateway:v1.0.0
container_name: dexin-service-gateway
ports:
- 9111:9111
networks:
gateway
networks:
gateway:
这样通过路由 xx.xx.xx.xx:9111/api/...无法访问
二、原因
经过排查,原来是容器虽然设置了网络,但不是在一个网内,导致无法访问
三、解决办法
1.建立一个独立的网络
$ docker network create dexin-coulpet
2.为每个微服务共同的网络
#用户微服务
version: '3.1'
services:
dexin-service-provider-user:
image: xx.xx.xx.xx:xxxx/dexin-service-provider-user:v1.0.0
container_name: dexin-service-provider-user
ports:
- 10101:10101
networks:
default:
external:
name: dexin-couplet
#gateway
version: '3.1'
services:
dexin-service-gateway:
image: xx.xx.xx.xx:xxxx/dexin-service-gateway:v1.0.0
container_name: dexin-service-gateway
ports:
- 9111:9111
networks:
default:
external:
name: dexin-couplet
通过路由 xx.xx.xx.xx:9111/api/...顺利访问,问题解决。