traefik v2.2帮助仅使用docker-compose路由器服务入口点

时间:2020-04-14 08:20:43

标签: docker-compose traefik

开始了解用于在家中玩游戏的docker,traefik。

目标:将所有内容放到docker-compose.yml.env文件中,了解基本知识,并相应地进行评论。

想要从traefik.test.local/dashboard而不是test.local:8080获取信息中心,类似地,应该从traefik.test.local/api访问api。这样就不必考虑端口号了。

将行添加到/etc/hosts

127.0.0.1       test.local
127.0.0.1       traefik.test.local

docker-compose.yml

version: "3.7"

services:
  traefik:
    # The official v2 Traefik docker image
    image: traefik:v2.2
    # Lets name the container
    container_name: traefik
    command:
      # Enables the web UI
      - "--api.insecure=true" 
      # Tells Traefik to listen to docker
      - "--providers.docker"
    ports:
      # The HTTP port
      - "80:80"
      # The Web UI (enabled by --api.insecure=true)
      - "8080:8080"
    volumes:
      # So that Traefik can listen to the Docker events
      - /var/run/docker.sock:/var/run/docker.sock
    #labels:
      #- "traefik.http.routers.router.rule=Host(`traefik.test.local/dashboard`)"
      #- "traefik.http.routers.router.rule=Host(`traefik.test.local/api`)"
    restart:
      always

无法理解如何从路由器连接到服务。如果我在任何地方都不对,也请纠正我。谢谢。

PS:操作系统:kde-neon

1 个答案:

答案 0 :(得分:1)

您可以使用以下定义实现此目的,不仅需要为路由器和服务添加标签,还需要为路由器和服务添加标签

proxy:
    image: traefik:v2.1
    command:
      - '--providers.docker=true'
      - '--entryPoints.web.address=:80'
      - '--entryPoints.metrics.address=:8082'
      - '--providers.providersThrottleDuration=2s'
      - '--providers.docker.watch=true'
      - '--providers.docker.swarmMode=true'
      - '--providers.docker.swarmModeRefreshSeconds=15s'
      - '--providers.docker.exposedbydefault=false'
      - '--providers.docker.defaultRule=Host("traefik.lvh.me")'
      - '--accessLog.bufferingSize=0'
      - '--api=true'
      - '--api.dashboard=true'
      - '--api.insecure=true'
      - '--ping.entryPoint=web'
    volumes:
      - '/var/run/docker.sock:/var/run/docker.sock:ro'
    ports:
      - '80:80'
      - '8080:8080'
    restart:
      always
    deploy:
      labels:
        - traefik.enable=true
        - traefik.docker.network=monitoring
        - traefik.http.services.traefik-dashboard.loadbalancer.server.port=8080
        - traefik.http.routers.traefik-dashboard.rule=Host(`dashboard.traefik.lvh.me`)
        - traefik.http.routers.traefik-dashboard.service=traefik-dashboard
        - traefik.http.routers.traefik-dashboard.entrypoints=web
        - traefik.http.services.traefik-api.loadbalancer.server.port=80
        - traefik.http.routers.traefik-api.rule=Host(`api.traefik.lvh.me`)
        - traefik.http.routers.traefik-api.service=traefik-api
        - traefik.http.routers.traefik-api.entrypoints=web
    logging:
      driver: json-file
      options:
        'max-size': '10m'
        'max-file': '5'

如果您使用lvh.me域,也不需要编辑/etc/hosts