I am trying to run consul, fabio and my microservice called email-api
in docker. When I run it, i see that consul registers all my services through registrator
and I also added urlprefix-
tag to my microservice. For some reason fabio can't pickup my microservice. Here is my docker compose to start with:
---
version: '3'
services:
consul-agent-1:
image: consul:latest
networks:
- consul-demo
command: "agent -retry-join consul-server-bootstrap -client 0.0.0.0"
consul-agent-2:
# Complete copy of 'consul-agent-1'
image: consul:latest
networks:
- consul-demo
command: "agent -retry-join consul-server-bootstrap -client 0.0.0.0"
consul-agent-3:
# Complete copy of 'consul-agent-1'
image: consul:latest
networks:
- consul-demo
command: "agent -retry-join consul-server-bootstrap -client 0.0.0.0"
consul-server-1:
# Uses only image and networks from 'consul-agent-1'
# while 'command' is overwritten
image: consul:latest
networks:
- consul-demo
command: "agent -server -retry-join consul-server-bootstrap -client 0.0.0.0"
consul-server-2:
# Complete copy of 'consul-server-1'
image: consul:latest
networks:
- consul-demo
command: "agent -server -retry-join consul-server-bootstrap -client 0.0.0.0"
consul-server-bootstrap:
# Uses only image and networks from 'consul-agent-1'
# while 'command' is overwritten and 'ports' are defined
image: consul:latest
networks:
- consul-demo
ports:
- "8400:8400"
- "8500:8500"
- "8600:8600"
- "8600:8600/udp"
command: "agent -server -bootstrap-expect 3 -ui -client 0.0.0.0"
fabio:
image: fabiolb/fabio
volumes:
- "/mnt/shared/fabio/fabio.properties:/etc/fabio/fabio.properties"
ports:
- "9999:9999"
- "9998:9998"
container_name: fabio
restart: unless-stopped
networks:
- consul-demo
dns:
- 192.168.16.5
email_api:
image: registry.local/emailapi:latest
container_name: sr-email-api
restart: unless-stopped
environment:
- ASPNETCORE_ENVIRONMENT=dev
#- SERVICE_80_CHECK_HTTP=/
- SERVICE_NAME=email_api
- SERVICE_CHECK_INTERVAL=10s
- SERVICE_CHECK_TIMEOUT=5s
- SERVICE_TAGS=urlprefix-/email-api
ports:
- "80"
networks:
- consul-demo
registrator:
image: gliderlabs/registrator:latest
volumes:
- "/var/run/docker.sock:/tmp/docker.sock"
#network_mode: host
container_name: consul-registrator1
restart: unless-stopped
command: 'consul://consul-server-bootstrap:8500'
networks:
- consul-demo
networks:
consul-demo:
email api is a .net core microservice.
Here is my fabio.properties
registry.consul.addr = 192.168.16.6:8500
I have confirmed that 192.168.16.6
is a one of the consul's server address.
When I query consul catalog services
, I see the following output:
agent
consul
consul-8400
consul-8500
consul-8600
email_api-80
fabio
fabio-9998
fabio-9999
So I know for sure that my emailapi is certainly registered with consul service registry When I visit http://<HOST_NAME>:9998/routes, I see nothing in fabio.
Am I missing something here?