0

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.

enter image description here

Am I missing something here?

Andy Johnson
  • 639
  • 8
  • 27

0 Answers0