首页 > 解决方案 > Traefik:将多个 docker 服务聚合到一个逻辑后端

问题描述

我正在使用其官方 docker -compose 文件运行 minio,该文件创建 4 个服务(容器):minio1、minio2、minio3、minio4。Traefik 将它们视为 4 个独特的服务,但实际上,它们应该被视为单个后端,即我希望 Traefik 为 minio 生成 1 个前端和 1 个后端(有 4 个服务器)。我尝试将它们放入一个组(servicefabric.groupname)但无济于事。我为每个 minio 服务设置了以下标签:

  labels:
    - "traefik.servicefabric.groupname=minio"
    - "traefik.basic.frontend.rule=Host:foo.bar.com"
    - "traefik.weight=10"  # 10,20,30,40 incremented per service
    - "traefik.frontend.rule=Host:traefik"
    - "traefik.port=9000"
  container_name: minio*

有什么办法可以做到这一点?

标签: dockerdocker-composetraefikminio

解决方案


@里弗曼

我和你有同样的问题,我通过玩耍解决了它,因为它没有在 Traefik 文档中完整记录。您需要做的是将traefik.backend所有服务的值指定为相同的名称并设置traefik.frontend.backend为该traefik.backend值。您不能为此使用服务件。下面是一个例子。

services:
  minio01:
    image: minio/minio
    hostname: minio01
    restart: always
    volumes:
      - minio01-data:/export
    networks:
      - minio
      - traefik
    command: server http://minio01/export http://minio02/export
    labels:
      - 'traefik.enable=true'
      - 'traefik.docker.network=traefik'
      - 'traefik.frontend.rule=Host:minio.local'
      - 'traefik.frontend.backend=minio'
      - 'traefik.port=9000'
      - 'traefik.protocol=http'
      - 'traefik.backend=minio'

  minio02:
    image: minio/minio
    hostname: minio02
    restart: always
    volumes:
      - minio02-data:/export
    networks:
      - minio
      - traefik
    command: server http://minio01/export http://minio02/export
    labels:
      - 'traefik.enable=true'
      - 'traefik.docker.network=traefik'
      - 'traefik.frontend.rule=Host:minio.local'
      - 'traefik.frontend.backend=minio'
      - 'traefik.port=9000'
      - 'traefik.protocol=http'
      - 'traefik.backend=minio'

推荐阅读