首页 > 解决方案 > 如何为子域上的 docker 服务正确配置 traefik?

问题描述

traefik 快速入门指南中关于在 whoami 子域上使用 whoami 图像的示例有效,但我无法让 jellyfin 在类似的设置中工作,我无法弄清楚有什么不同:

kevin@pihost:~/personal$ curl -H Host:jellyfin.kevinm416.com http://127.0.0.1
Bad Gateway
kevin@pihost:~/personal$ curl -H Host:whoami.kevinm416.com http://127.0.0.1
Hostname: f7820e1787fe
IP: 127.0.0.1
...

这是我的 docker-compose 文件,其中包含所有 traefik 配置:

version: "3"

volumes:
  jellyfin-config:
  jellyfin-cache:

services:
  reverse-proxy:
    image: traefik:v2.2
    # Enables the web UI and tells Traefik to listen to docker
    command: 
      - "--api.insecure=true"
      - "--providers.docker"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
    ports:
      - "80:80"
      - "443:443"
      # The Web UI (enabled by --api.insecure=true)
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

  whoami:
    image: containous/whoami
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.kevinm416.com`)"

  jellyfin:
    image: jellyfin/jellyfin
    network_mode: "host"
    environment:
      TZ: 'America/Los_Angeles'
    ports:
      - "8096:8096"
    volumes:
      - jellyfin-config:/config
      - jellyfin-cache:/cache
      - /home/kevin/microcenter:/microcenter:ro
    labels:
      - "traefik.http.routers.jellyfin.rule=Host(`jellyfin.kevinm416.com`)"
      - "traefik.http.services.jellyfin.loadbalancer.server.port=8096"
    restart: always

标签: dockerdocker-composesubdomaintraefik

解决方案


我想可能有两个问题:

  1. 你还没有为你的容器指定入口点,例如whoami它可能是(也许你想要一个带有端口 8096 的 jellyfin 的新入口点?):
- "traefik.http.routers.whoami.entrypoints=web"
  1. network_mode: "host"在 jellyfin 中——traefik 应该与容器在同一个网络中(或尝试使用traefik.docker.network设置),所以我建议删除该行。

推荐阅读