你需要跑 领事代理 在每个Docker容器内的客户端模式下。每个Docker Container都需要一个 领事服务定义 文件让代理知道将其服务广告给Consul服务器。
它们看起来像这样:
{ "service": { "name": "redis", "tags": ["master"], "address": "127.0.0.1", "port": 8000, "checks": [ { "script": "/usr/local/bin/check_redis.py", "interval": "10s" } ] } }
还有一个 服务健康检查 监控服务的健康状况。像这样的东西:
{ "check": { "id": "redis", "name": "Redis", "script": "/usr/local/bin/check_redis_ping_returns_pong.sh", "interval": "10s" } }
在另一个Docker Container中,您的代码可以通过DNS或Consul Servers HTTP API找到Redis服务
dig @localhost -p 8500 redis.service.consul curl $CONSUL_SERVER/v1/health/service/redis?passing