You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik配置报错排查:文件监控失败与YAML语法错误解决

Docker Compose部署Traefik、Authelia、whoami的配置错误排查与解决

环境配置

使用的docker-compose.yml配置如下:

---
version: '3'

services:
traefik:
    image: traefik
    container_name: traefik
    labels:
      - 'traefik.enable=true'
      - 'traefik.http.routers.api.rule=Host(`traefik.example.com`)'
      - 'traefik.http.routers.api.entrypoints=https'
      - 'traefik.http.routers.api.service=api@internal'
      - 'traefik.http.routers.api.tls=true'
      - 'traefik.http.routers.api.tls.options=default'
      - 'traefik.http.routers.api.middlewares=authelia@docker'
    command:
      - '--api'
      - '--log=true'
      - '--log.level=DEBUG'
      - '--providers.docker=true'
      - '--providers.docker.exposedbydefault=false'
      - '--providers.file.filename=/etc/traefik/certificates.yml'
      - '--entrypoints.http=true'
      - '--entrypoints.http.address=:80'
      - '--entrypoints.http.http.redirections.entrypoint.to=https'
      - '--entrypoints.http.http.redirections.entrypoint.scheme=https'
      - '--entrypoints.https=true'
      - '--entrypoints.https.address=:443'
    ports:
      - 8080:80  # Web
      - 1443:443 # https
    volumes:
      - /my_dir/traefik:/etc/traefik
      - /var/run/docker.sock:/var/run/docker.sock

authelia:
    image: authelia/authelia
    container_name: authelia
    volumes:
      - /my_dir/authelia:/config
    labels:
      - 'traefik.enable=true'
      - 'traefik.http.routers.authelia.rule=Host(`authelia.example.com`)'
      - 'traefik.http.routers.authelia.entrypoints=https'
      - 'traefik.http.routers.authelia.tls=true'
      - 'traefik.http.routers.authelia.tls.options=default'
      - 'traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://authelia.example.com'
      - 'traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true'
      - 'traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email'
    restart: unless-stopped
    healthcheck:
      ## In production the healthcheck section should be commented.
      disable: true

whoami:
  image: traefik/whoami
  container_name: whoami
  labels:
    - 'traefik.enable=true'
    - 'traefik.http.routers.whoami.rule=Host(`whoami.example.com`)'
    - 'traefik.http.routers.whoami.entrypoints=https'
    - 'traefik.http.routers.whoami.tls=true'
    - 'traefik.http.routers.whoami.tls.options=default'
    - 'traefik.http.routers.whoami.middlewares=authelia@docker'

报错情况

初始报错

首次启动后,Traefik日志显示文件不存在:

docker compose logs traefik

traefik  | time="2023-11-28T18:36:20+01:00" level=info msg="Starting provider *file.Provider"
traefik  | time="2023-11-28T18:36:20+01:00" level=debug msg="*file.Provider provider configuration: {\"watch\":true,\"filename\":\"/my_dir/traefik/certificates.yml\"}"
traefik  | time="2023-11-28T18:36:20+01:00" level=error msg="Cannot start the provider *file.Provider: error adding file watcher: no such file or directory"
traefik  | time="2023-11-28T18:36:20+01:00" level=info msg="Starting provider *traefik.Provider"

修改路径后的新报错

将Traefik命令中的--providers.file.filename调整为/etc/traefik/certificates.yml后,出现YAML语法错误:

traefik  | time="2023-11-29T11:01:22+01:00" level=info msg="Starting provider *file.Provider"
traefik  | time="2023-11-29T11:01:22+01:00" level=debug msg="*file.Provider provider configuration: {\"watch\":true,\"filename\":\"/etc/traefik/certificates.yml\"}"
traefik  | time="2023-11-29T11:01:22+01:00" level=error msg="Error while building configuration (for the first time): yaml: line 4: mapping values are not allowed in this context" providerName=file

当前/my_dir/traefik/certificates.yml内容(存在语法问题):

---
tls:
  certificates
    - certFile: /etc/traefik/certs/public.crt
      keyFile: /etc/traefik/certs/private.pem

证书文件已存在:

ls -la /my_dir/traefik/certs

-rw-r--r--. 1 user grp 1679 Nov 29 10:48 private.pem
-rw-r--r--. 1 user grp 1143 Nov 29 10:48 public.crt

解决方法

编辑/my_dir/traefik/certificates.yml,在certificates条目后添加缺失的冒号,修正后的文件内容如下:

---
tls:
  certificates:
    - certFile: /etc/traefik/certs/public.crt
      keyFile: /etc/traefik/certs/private.pem

内容的提问来源于stack exchange,提问作者Fr0zt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 02:57:03