docker下部署kong+consul+konga报错问题处理
- 创业
- 2025-09-05 07:09:02

前言:
由于在docker下部署一些项目比较特殊,特别是网络这一块,如果没有搞清楚,是很容易出问题的。
先上docker-compose 编排这里的docker-compose for kong可以在 kong-compose 获取代码
version: '3.9' x-kong-config: &kong-env KONG_DATABASE: ${KONG_DATABASE:-off} KONG_PG_DATABASE: ${KONG_PG_DATABASE:-kong} KONG_PG_HOST: ip # ip地址 KONG_PG_USER: kong # 用户名直接写死为 kong KONG_PG_PASSWORD: ggbhack # 密码直接写死为 ggbhack volumes: kong_data: driver: local driver_opts: type: none device: ./kong_data o: bind kong_prefix_vol: driver: local driver_opts: type: none device: ./kong_prefix_vol o: bind kong_tmp_vol: driver: local driver_opts: type: none device: ./kong_tmp_vol o: bind networks: kong-net: external: false # driver: bridge services: kong-migrations: image: "${KONG_DOCKER_TAG:-kong:latest}" command: kong migrations bootstrap profiles: ["database"] depends_on: - db environment: <<: *kong-env networks: - kong-net restart: on-failure kong-migrations-up: image: "${KONG_DOCKER_TAG:-kong:latest}" command: kong migrations up && kong migrations finish profiles: ["database"] depends_on: - db environment: <<: *kong-env networks: - kong-net restart: on-failure kong: image: "${KONG_DOCKER_TAG:-kong:latest}" user: "${KONG_USER:-kong}" container_name: kong environment: <<: *kong-env KONG_ADMIN_ACCESS_LOG: /dev/stdout KONG_ADMIN_ERROR_LOG: /dev/stderr KONG_PROXY_LISTEN: "${KONG_PROXY_LISTEN:-0.0.0.0:8000}" KONG_ADMIN_LISTEN: "${KONG_ADMIN_LISTEN:-0.0.0.0:8001}" KONG_ADMIN_GUI_LISTEN: "${KONG_ADMIN_GUI_LISTEN:-0.0.0.0:8002}" KONG_PROXY_ACCESS_LOG: /dev/stdout KONG_PROXY_ERROR_LOG: /dev/stderr KONG_PREFIX: ${KONG_PREFIX:-/var/run/kong} KONG_DECLARATIVE_CONFIG: "/opt/kong/kong.yaml" KONG_DNS_RESOLVER: "ip:8600" # 使用 consul 服务作为 DNS 解析器 networks: - kong-net ports: - "${KONG_INBOUND_PROXY_LISTEN:-0.0.0.0}:8000:8000/tcp" - "${KONG_INBOUND_SSL_PROXY_LISTEN:-0.0.0.0}:8443:8443/tcp" - "8001:8001/tcp" - "8444:8444/tcp" - "8002:8002/tcp" healthcheck: test: ["CMD", "kong", "health"] interval: 10s timeout: 10s retries: 10 restart: on-failure:5 read_only: true volumes: - kong_prefix_vol:${KONG_PREFIX:-/var/run/kong} - kong_tmp_vol:/tmp - ./config:/opt/kong security_opt: - no-new-privileges consul: image: hashicorp/consul:latest container_name: consul profiles: ["database"] ports: - "8500:8500" # Consul UI 和 API - "8600:8600/udp" # DNS 解析端口(UDP) environment: CONSUL_BIND_INTERFACE: eth0 command: agent -server -ui -bootstrap-expect=1 -client=0.0.0.0 volumes: - ./consul/data:/consul/data - ./consul/config:/consul/config networks: - kong-net db: image: postgres:9.5 container_name: kong-db profiles: ["database"] environment: POSTGRES_DB: ${KONG_PG_DATABASE:-kong} POSTGRES_USER: kong # 用户名 kong POSTGRES_PASSWORD: ggbhack # 密码 ggbhack healthcheck: test: [ "CMD", "pg_isready", "-d", "${KONG_PG_DATABASE:-kong}", "-U", "kong" # 使用 kong 作为数据库用户 ] interval: 30s timeout: 30s retries: 3 restart: on-failure stdin_open: true tty: true networks: - kong-net volumes: - kong_data:/var/lib/postgresql/data ports: - 5432:5432 konga: image: pantsel/konga:latest container_name: konga environment: KONGA_HOST: "http://kong:8001" # Kong Admin API 地址 DB_ADAPTER: "postgres" # 数据库适配器类型 DB_URI: "postgres://kong:password@db:5432/kong" # Konga 使用的数据库 URI ports: - "1337:1337" # Konga Web UI 端口 networks: - kong-net depends_on: - kong # - db restart: always 遇到的问题报错 访问接口 ip:port/g/v1/goods 【这是我go搭建的 微服务其中的一个服务接口】
Error
failed the initial dns/balancer resolve for 'goods-web.service.consul' with: failed to receive reply from UDP server ip(外网ip):8600: connection refused.
request_id: b0d489023418a7508565f5411b5a5f6c
总结下来就是 dns解析失败
nacos 配置 consul 状态 service+routes 定义 解决方案① 确保 以上启动正常,并且kong和consul在同一个 编排下
② 我使用的是外网访问 - 将 consul 开放出去【一开始我开放的是tcp,后面改为了udp】这里是关键 - 之后就正常访问啦
我在网上找了,也没有找到什么方案 - 问题的关键还是在配置上;弄了几个小时,终于搞定
docker下部署kong+consul+konga报错问题处理由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“docker下部署kong+consul+konga报错问题处理”