如何为子域上的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

解决方法

我想可能有两个问题:

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...