Docker Compose配置报错:traefik_proxy.external类型无效求解决
解决Traefik Docker Compose启动时的网络配置错误
执行sudo docker-compose -f docker-compose.yml up启动Traefik时,收到以下错误:
ERROR: The Compose file './docker-compose.yml' is invalid because:
networks.traefik_proxy.external contains an invalid type, it should be a boolean, or an object
问题根源
错误出在networks段的traefik_proxy配置中,external字段的语法不符合Docker Compose规范。该字段要求值为布尔值(true/false),或者是包含name属性的对象,而你的配置中external后未指定有效值,直接跟了name字段,导致语法解析失败。
修正方案
方案一:布尔值+独立name字段
将networks段的traefik_proxy配置修改为:
networks: traefik_proxy: external: true name: "traefik_proxy" default: driver: bridge
方案二:对象形式指定外部网络名称
也可以写成嵌套对象的形式,把name放在external字段下:
networks: traefik_proxy: external: name: "traefik_proxy" default: driver: bridge
两种写法都能正确声明traefik_proxy是一个已存在的外部网络,Docker Compose会直接使用该网络而非创建新网络。
修改后的完整配置文件
version: "3.9" services: traefik: image: "traefik:latest" container_name: "traefik" hostname: "traefik" volumes: - "/etc/localtime:/etc/localtime:ro" - "/etc/timezone:/etc/timezone:ro" - "/var/run/docker.sock:/var/run/docker.sock" - "./config:/etc/traefik" # labels: # - "traefik.enable=true" # - "traefik.http.routers.traefik.rule=Host(traefik.example.com) && (PathPrefix(/api) || PathPrefix(/dashboard))" # - "traefik.http.routers.traefik.entrypoints=websecure" # - "traefik.http.routers.traefik.tls.certresolver=default" # - "traefik.http.routers.traefik.service=api@internal" # - "traefik.http.routers.traefik.middlewares=auth@docker" # - "traefik.http.middlewares.auth.basicauth.users=user:pass" # 参考文档设置 networks: - "traefik_proxy" - "default" ports: - "80:80" - "443:443" restart: "always" networks: traefik_proxy: external: true name: "traefik_proxy" default: driver: bridge
内容的提问来源于stack exchange,提问作者TheBlackHand
相关产品推荐
相关产品推荐

