Search code examples
dockerdocker-composedocker-swarmtraefik

Traefik cannot reach backend when docker-compose has port mapping


My docker is in swarm mode.

I am puzzled about why traefik is no more able to reach my nexus backend as soon as I settle a port mapping from within its compose file : I got a 504 (timeout) error instead. Without the mapping, traefils works fine.

Traefik is deployed on the swarm, as a service, with the following command :

docker network create --driver=overlay traefik-net

docker service create \
        --name traefik \
        --constraint=node.role==manager \
        --publish 80:80 --publish 8088:8080 \
        --with-registry-auth \
        --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
        --mount type=bind,source=/var/opt/data/flat/gerdce/shared/servers/traefik/out/,target=/out/ \
        --mount type=bind,source=/var/opt/data/flat/gerdce/shared/servers/traefik/traefik.toml,target=/traefik.toml \
        --network traefik-net \
        dvckzasc03.rouen.francetelecom.fr:5000/pli/traefik \
        --docker \
        --docker.domain=docker.localhost \
        --docker.swarmMode=true \
        --docker.watch=true \
        --api

(Il also tried running traefik from a docker-compose file, but with no more success)

The nexxus stack :

version: '3.3'
services:
  nexus:
    image: some_nexus:5000/sonatype/nexus3
    volumes:
    - /var/opt/data/flat/gerdce/shared/repositories/nexus/data:/nexus-data
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager
      labels:
      - "traefik.enable=true"
      - "traefik.static.frontend.rule=PathPrefix:/static/rapture"
      - "traefik.serviceext.frontend.rule=PathPrefix:/service/extdirect"
      - "traefik.serviceout.frontend.rule=PathPrefix:/service/outreach"
      - "traefik.nexus.frontend.rule=PathPrefixStrip:/nexus"
      - "traefik.port=8081"
    networks:
        - traefik-net
    #ports:
    #- "5050:5050"

networks:
    traefik-net:
      external: true

Everything works fine this way : traefik redirects well every call to /nexus (and s.o.) .... until I uncomment the port mapping!

I really need this port mapping, in order to login / push / pull from my VM.

Any idea on

  • why this is happening (have I missed stg from the docs ?
  • what may be the fix or workaround here?

Versions :

Docker version 18.03.0-ce, build 0520e24

docker-compose version 1.22.0, build f46880fe

Traefik 1.6.5


Solution

  • Eventually, I had it working adding a missing label:

    - "traefik.docker.network=traefik-net"