Docker-Compose部署Kong 3.0代理遇路由匹配失败及配置未加载问题
问题排查与解决方案
核心问题分析
- 环境变量拼写错误:Docker-Compose中Kong的环境变量
KONG_DECALATIVE_CONFIG存在拼写错误,正确应为KONG_DECLARATIVE_CONFIG。这个错误导致Kong无法识别加载自定义声明式配置的指令,只能使用默认的空配置,这就是服务列表为空、配置仅返回默认值的根本原因。 - 多余的引号转义:环境变量
KONG_ADMIN_LISTEN和command中的转义引号(\")属于无效格式,会导致Kong解析参数出错。 - 路由未明确关联服务:虽然不是当前主要问题,但Kong路由未显式绑定到对应服务,可能导致后续匹配异常。
修正后的配置文件
1. 修正docker-compose.yml
version: '3.8' name: 'App' networks: api-network: name: api-network driver: bridge services: kong: image: kong:3.0 volumes: - ./App/kong/kong.yml:/usr/local/kong/declarative/kong.yml container_name: kong environment: KONG_DATABASE: 'off' KONG_PROXY_ACCESS_LOG: '/dev/stdout' KONG_ADMIN_ACCESS_LOG: '/dev/stdout' KONG_PROXY_ERROR_LOG: '/dev/stderr' KONG_ADMIN_ERROR_LOG: '/dev/stderr' KONG_ADMIN_LISTEN: 0.0.0.0:8001, 0.0.0.0:8444 ssl KONG_DECLARATIVE_CONFIG: /usr/local/kong/declarative/kong.yml command: kong start networks: - api-network ports: - "8000:8000" - "8443:8443" - "127.0.0.1:8001:8001" - "127.0.0.1:8444:8444" building_service: container_name: building_service build: ./App/building_service restart: always command: uvicorn app.main:app --reload --host 0.0.0.0 --port 80 ports: - 8004:80 expose: - 80 networks: - api-network volumes: - ./App/building_service:/usr/src/building_service/
2. 修正kong.yml(添加路由与服务的关联)
_format_version: "3.0" _transform: true services: - name: building_service url: http://building_service/building routes: - name: building_service_route service: building_service paths: - /building
操作步骤
- 停止并删除现有容器:
docker-compose down
- 重新启动服务:
docker-compose up -d
- 验证配置加载情况:
访问http://localhost:8001/services,应能看到building_service的条目;访问http://localhost:8000/building或http://localhost:8000/building/docs,应能正常转发到后端服务。
内容的提问来源于stack exchange,提问作者Ignac96
相关产品推荐
相关产品推荐

