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

Kong Gateway Docker容器端口访问及PostgreSQL连接失败问题

Kong Gateway Docker 问题解决

端口访问问题说明

你最初用docker run -it --rm kong-image kong version无法访问端口,是因为这个命令仅执行了Kong的版本查询,没有启动网关服务,且未配置端口映射。添加-p 8000:8000(按需加上8443、8001、8444等端口)并启动Kong服务后,就能通过宿主机端口访问。

PostgreSQL连接拒绝问题修复

Kong Gateway依赖PostgreSQL存储配置,出现[PostgreSQL错误] 无法获取PostgreSQL server_version_num:连接被拒绝错误,按以下方向排查:

  • 确认PostgreSQL服务状态
    不管PostgreSQL是跑在宿主机还是Docker容器里,先确保服务正常运行。如果是Docker容器,用docker ps检查容器是否在运行,docker logs <postgres容器名>查看启动日志有没有异常。

  • 解决网络连通问题
    如果PostgreSQL在宿主机:

    • 别用localhost当数据库地址,容器内的localhost指向自身,改用宿主机局域网IP;或者临时用--network host参数启动Kong(生产环境不推荐);同时修改PostgreSQL的pg_hba.conf,添加允许容器网段访问的规则,比如host all all 172.17.0.0/16 md5,然后重启PostgreSQL。

    如果PostgreSQL在Docker容器:

    • 先创建共享网络:docker network create kong-net
    • 启动PostgreSQL时加入该网络:docker run -d --name kong-db --network kong-net -e POSTGRES_DB=kong -e POSTGRES_USER=kong -e POSTGRES_PASSWORD=kong postgres:15
    • 启动Kong时同样加入该网络,并用容器名作为数据库地址:
      docker run -d --name kong --network kong-net \
        -e KONG_DATABASE=postgres \
        -e KONG_PG_HOST=kong-db \
        -e KONG_PG_USER=kong \
        -e KONG_PG_PASSWORD=kong \
        -e KONG_ADMIN_LISTEN=0.0.0.0:8001,0.0.0.0:8444 ssl \
        -p 8000:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 \
        kong-image
      
  • 核对数据库配置参数
    检查Kong的环境变量是否正确:

    • KONG_PG_HOST:必须是PostgreSQL的正确地址(容器名或宿主机IP)
    • KONG_PG_PORT:默认5432,若修改过PostgreSQL端口需同步设置
    • KONG_PG_USER、KONG_PG_PASSWORD、KONG_PG_DATABASE:要和PostgreSQL创建时的配置完全一致
  • 初始化Kong数据库
    第一次启动Kong前,必须先初始化数据库表结构:

    docker run --rm --network kong-net \
      -e KONG_DATABASE=postgres \
      -e KONG_PG_HOST=kong-db \
      -e KONG_PG_USER=kong \
      -e KONG_PG_PASSWORD=kong \
      kong-image kong migrations bootstrap
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:22:35