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
相关产品推荐
相关产品推荐

