当docker-compose具有端口映射时,Traefik无法到达后端

时间:2018-08-09 12:51:07

标签: docker docker-compose docker-swarm traefik

我的码头工人处于蜂群模式。

我对为什么traefik一旦从其compose文件中解决端口映射后为什么不再能够到达我的后端感到困惑,我却收到了504(超时)错误。如果没有映射,则traefils可以正常工作。

Traefik作为服务使用以下命令部署在集群上

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还尝试从docker-compose文件运行traefik,但没有成功)

nexxus堆栈:

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

这种方式一切正常:traefik可以很好地将每次调用重定向到/ nexus(和s.o。)....直到取消注释端口映射!

我真的需要此端口映射,以便从我的VM登录/推送/拉取。

关于

的任何想法
  • 为什么会这样(我错过了docs的stg吗?
  • 这里的解决方法或解决方法是什么?

版本:

  

Docker版本18.03.0-ce,内部版本0520e24

     

docker-compose版本1.22.0,内部版本为f46880fe

     

特拉菲克1.6.5

2 个答案:

答案 0 :(得分:0)

首先,我建议将其粘贴到与Nexus堆栈文件类似的docker-stack.yml中,因为这样更易于维护。

这是我昨天部署的可用于端口映射的traefik代理的示例

version: "3.4"

services:
  traefik:
    image: traefik:latest
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"

答案 1 :(得分:0)

最终,我让它可以添加缺少的标签:

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