'docker swarm haproxy microservice

i want to deploy microservice inside docker swarm. for it i have 2 machine. one is swarm master other is swarm worker.

i have 2 different service called web1 and web2.

Inside master deployed haProxy and web1. Inside worker deployed web2.

it is working if i use self ip:port BUT from haProxy can not call web2 (another host deployed). actually haproxy doesnt know docker service.actually i dont want to given ip address. is not possible docker service name ?

haproxy.cf is like following

global
    maxconn 100
    log stdout format raw local0 debug
defaults
    log global
    mode http
    option httpclose
    retries 5
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http-in
    bind *:80

    acl has_web1 path_beg /web1
    acl has_web2 path_beg /web2

    use_backend web1 if has_web1
    use_backend web2 if has_web2

    default_backend web1

resolvers docker
    nameserver dns1 127.0.0.11:53

backend web1
    http-request replace-path  /web1[/]?(.*)     \1\2
    server web1 web1:80 check inter 10s resolvers docker

backend web2
    http-request replace-path  /web2[/]?(.*)     \1\2
    server web2 web2:80 check inter 10s resolvers docker


docker-stack.yml is like following

version: "3.9"

services:
  web1:
    image: dockercloud/hello-world
    hostname: web1
    container_name: web1
    ports:
      - "81:80"
    networks:
      - backend
    deploy:
      placement:
        constraints:
          - node.role == worker

  web2:
    image: dockercloud/hello-world
    hostname: web2
    container_name: web2
    ports:
      - "82:80"
    networks:
      - backend

  haproxy:
    image: sample/sample-haproxy
    ports:
      - "80:80"
    networks:
      - backend
    depends_on:
      - web1
      - web2
    deploy:
      placement:
        constraints:
          - node.role == manager

networks:
  backend:
    attachable: true




Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source