具有多个 docker-compose.yml 文件的 Traefik

Łuk*_*icz 6 docker-compose devops traefik

特拉菲克的朋友们大家好。

我刚刚开始研究 traefik。所有教程都展示了如何使用 traefik 与其他容器一起运行一个 docker-compose.yml 文件。我经常有许多单独的 docker-compose.yml 文件,并且非常想将它们与 traefik 一起使用。

这是我的 traefik 容器代码:

version: "3.3"
services:
  traefik:
    image: "traefik:v2.5"
    container_name: "traefik"
    command:
      #- "--log.level=DEBUG"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.tlschallenge=true"
      #- "--certificatesresolvers.myresolver.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory"
      - "--certificatesresolvers.myresolver.acme.email=xxxxxxxxx@gmail.com"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "443:443"
      - "8080:8080"
    networks:
      - "traefik"
      - "external"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
Run Code Online (Sandbox Code Playgroud)

以及我想与 traefik 一起使用的另一个示例 docker-compose:

version: '3.1'
services:
  php:
    image: php:7.4-apache
    ports:
      - 8081:80
    volumes:
      - ./php/www:/var/www/html/
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.php.rule=host(`php.xxxxxx.com`)"
      - "traefik.http.routers.php.entrypoints=websecure"
      - "traefik.http.routers.php.tls.certresolver=myresolver"
Run Code Online (Sandbox Code Playgroud)

不幸的是,这似乎不起作用(当我将这些文件连接到一个大的 docker-compose.yml 文件中时 - 它工作正常。你能给我指出正确的方向吗?

Fre*_*eek 1

Traefik 需要成为其连接的所有服务的网络的一部分。network: host对我来说,当我设置Traefik时它就有效。(然后你必须删除端口部分。)

我确实想知道这有多安全,我似乎无法从另一台机器访问管理界面,所以这很好。