Traefik和Docker Swarm吗?

时间:2019-01-15 12:12:31

标签: docker-swarm traefik

我不确定是否可行,因为我无法控制DNS(尽管我可以编辑/ etc / hosts)。

我有一些Azure Ubuntu服务器,其中有1个管理器和2个工作器(共3个)。这些节点只能在我们的公司网络上访问。我通常会在办公室的桌面上输入以下内容来访问Web门户:

  • IP地址:端口
  • 主机:端口
  • Host.corp.companyname.com:端口

我的目标是改为键入诸如 host / pgadmin host / portainer 之类的内容,以将其路由到在工作节点上运行的Web门户。可能吗?我不介意编辑桌面的/ etc / hosts文件,但是我不想指定IP地址(否则,使门户网站在多个节点上运行没有意义)。

services:
  web:
    image: traefik:1.7-alpine
    networks:
      - frontend
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /dev/null:/traefik.toml
    ports:
      - "80:80"
      - "8080:8080"
    command:
      - --docker
      - --docker.swarmMode
      - --docker.domain=corp.companyname.com
      - --docker.watch
      - --api
      - --defaultentrypoints=http
    deploy:
      placement:
        constraints: 
          - node.role == manager


  pgadmin4:
    image: dpage/pgadmin4:4.0
    ports:
      - "5050:80"
    deploy:
      placement: 
        constraints: 
          - node.role == worker
      labels:
      - traefik.enable=true
      - traefik.docker.network=frontend
      - traefik.backend=pgadmin4
      - traefik.port=5050
      - traefik.frontend.rule=???????
    networks:
      - frontend

networks:
  frontend:
    external: true
    name: frontend

2 个答案:

答案 0 :(得分:0)

您完全可以做到

  - traefik.frontend.rule=PathPrefixStrip:/pgadmin/

Here是traefik可以使用的匹配器列表。

答案 1 :(得分:0)

我终于有了这个工作。

  1. 我必须将traefik.docker.network从前端重命名为traefik_frontend(traefik是我运行堆栈部署命令时使用的名称)
  2. 我不得不使用Firefox(Chrome无法正常工作-我不知道为什么)
  3. 我将traefik.port = 5050更改为traefik.port = 80
  4. 我在Windows上的/ etc / hosts文件中添加了traefik-pgadmin.docker.localhost(并在将其另存为.txt文件之前注意到了)