通过docker network 解决容器间相互依赖(Link)的问题
2018-06-20 10:20
1731 查看
在之前的项目中,由于设计都比较合理,很少存在两个容器相互依赖的情况,在本地开发环境,一直使用 docker link 都能完美工作。
最近项目中开发优惠券系统,开发完成后发现优惠券系统依赖了订单系统,订单系统依赖又依赖了优惠券,由于相互依赖,无法启动。
其实在 docker-compose 的官方文档中,已经不推荐使用link,在未来的版本中会被移除,官方的推荐是使用 network。 解决方案就是在 docker-compose.yml 中自定义一个network,指定所有服务都使用这个network。Network 配置中还可以设置服务的别名,同network中的服务可以使用别名访问其他服务。 以下是我本地开发环境配置:
其中定义了网络mall-network, 每个服务在network中均定义了别名,服务间可以通过别名相互访问,例如 在order服务中,可以通过 http://product/api 访问商品服务
最近项目中开发优惠券系统,开发完成后发现优惠券系统依赖了订单系统,订单系统依赖又依赖了优惠券,由于相互依赖,无法启动。
其实在 docker-compose 的官方文档中,已经不推荐使用link,在未来的版本中会被移除,官方的推荐是使用 network。 解决方案就是在 docker-compose.yml 中自定义一个network,指定所有服务都使用这个network。Network 配置中还可以设置服务的别名,同network中的服务可以使用别名访问其他服务。 以下是我本地开发环境配置:
version: '2' services: mall_gateway: image: registry.local.com/org/mall-gateway networks: mall-network: aliases: - mall_gateway ports: - 9009:80 volumes: - /Users/www/mall-gateway:/data/web_data/app mall_promotion: image: registry.local.com/org/mall-gateway networks: mall-network: aliases: - mall_promotion ports: - 9003:80 volumes: - /Users/www/promotion-system:/data/web_data/app order: image: registry.local.com/org/gsp-php-base-dev networks: mall-network: aliases: - order ports: - 9006:80 volumes: - /Users/www/base_framework/app/order:/data/web_data/web/app/project env_file: - /Users/www/base_framework/app/order/config/DEV_ENV_EXAMPLE product: image: registry.local.com/org/gsp-php-base-dev networks: mall-network: aliases: - product ports: - 9004:80 volumes: - /Users/www/base_framework/app/product:/data/web_data/web/app/project env_file: - /Users/www/base_framework/app/product/config/DEV_ENV_EXAMPLE networks: mall-network: driver: bridge
其中定义了网络mall-network, 每个服务在network中均定义了别名,服务间可以通过别名相互访问,例如 在order服务中,可以通过 http://product/api 访问商品服务
相关文章推荐
- [docker]通过阿里云源安装docker && flannel不通问题解决(try this guy out)
- Docker 解决容器时间与主机时间不一致的问题三种解决方案
- 为Docker容器设置固定IP实现网络联通(2)——通过Python脚本实现并解决pipework缺陷
- 云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题
- Docker跨主机容器互传数据问题及解决方法
- 解决Maven项目相互依赖/循环依赖/双向依赖的问题
- 解决gradle的本地工程依赖和通过maven依赖之间的冲突问题
- 云计算之路-阿里云上-容器难容:自建docker swarm集群遭遇无法解决的问题
- 解决Maven项目相互依赖/循环依赖/双向依赖的问题
- 解决Maven项目相互依赖/循环依赖/双向依赖的问题
- Docker 容器中“TERM environment variable not set.”问题解决
- 解决Maven项目相互依赖/循环依赖/双向依赖的问题
- npm http-server Dockerfile alpine 微容器,袖珍体积,解决时区问题
- 远程解决centos的网络问题: service network start 出现RTNETLINK answers: File exists错误解决
- docker多容器通过--link互联,如何做到顺序启动?
- 通过mvn dependency:tree 查看依赖树,解决依赖jar冲突问题
- docker容器内网络请求缓慢问题解决
- 解决 docker 容器的中文乱码问题
- 解决gradle的本地工程依赖和通过maven依赖之间的冲突问题
- Docker 解决容器时间与主机时间不一致的问题三种解决方案