代码之家  ›  专栏  ›  技术社区  ›  Marvin

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

  •  0
  • Marvin  · 技术社区  · 6 年前

    我的码头工人在蜂群模式。

    我很困惑,为什么traefik不能再到达我的nexus后端,只要我解决一个端口映射,从它的组成文件:我得到了一个504(超时)错误。没有映射,traefils工作正常。

    Traefik作为一种服务部署在swarm上,命令如下 :

    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撰写文件运行traefik,但没有成功)

    Nexus堆栈:

    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 ?
    • 这里可能有什么解决方法?

    版本:

    Docker版本18.03.0-ce,版本0520e24

    docker compose版本1.22.0,构建f46880fe

    特拉菲克1.6.5

    2 回复  |  直到 6 年前
        1
  •  0
  •   vegasbrianc    6 年前

    首先,我建议将它粘贴到docker-stack.yml中,就像您的Nexus堆栈文件一样,因为它更易于维护。

    这是我昨天部署的traefik代理的一个例子,它可以处理端口映射

    version: "3.4"
    
    services:
      traefik:
        image: traefik:latest
        ports:
          - "80:80"
          - "443:443"
          - "8080:8080"
    
        2
  •  0
  •   Marvin    6 年前

    最后,我让它添加了一个丢失的标签:

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