docker部署kong网关核心是构建postgresql与kong协同容器组,需正确配置数据库连接、自定义网络及初始化迁移;推荐用docker-compose一键拉起kong-database、kong-migration和kong服务,通过admin api验证后即可代理流量并启用插件。

用 Docker 部署 Kong 网关,核心是把 Kong(含数据库支持)作为一组协同容器运行,重点在于正确配置数据库连接、网络互通和插件启用。不建议裸跑单节点 Kong,推荐搭配 PostgreSQL 或 Cassandra;Docker Compose 是最简实用方式。
准备基础服务:PostgreSQL + Kong 数据库初始化
Kong 依赖外部数据库存储路由、服务、插件等配置,默认支持 PostgreSQL 和 Cassandra。推荐 PostgreSQL,轻量且 Docker 生态成熟。
确保 PostgreSQL 容器启动后,Kong 容器能访问其 host.docker.internal:5432(Mac/Windows)或宿主机 IP(Linux),并提前创建好专用数据库与用户:
- 创建数据库:
CREATE DATABASE kong; - 创建用户:
CREATE USER kong WITH PASSWORD 'kong'; - 授权:
GRANT ALL PRIVILEGES ON DATABASE kong TO kong;
编写 docker-compose.yml 启动 Kong 控制平面
以下是最小可用的 docker-compose.yml 示例(基于 Kong 3.7+ 官方镜像,使用 PostgreSQL):
version: "3.8"
services:
kong-database:
image: postgres:15
environment:
POSTGRES_DB: kong
POSTGRES_USER: kong
POSTGRES_PASSWORD: kong
healthcheck:
test: ["CMD", "pg_isready", "-U", "kong", "-d", "kong"]
interval: 30s
timeout: 10s
retries: 5
<p>kong-migration:
image: kong:3.7
command: kong migrations bootstrap
depends_on:
kong-database:
condition: service_healthy
environment:
KONG_DATABASE: postgres
KONG_PG_HOST: kong-database
KONG_PG_USER: kong
KONG_PG_PASSWORD: kong
KONG_PG_DATABASE: kong</p><p>kong:
image: kong:3.7
depends_on:</p>
- kong-migration environment: KONG_DATABASE: postgres KONG_PG_HOST: kong-database KONG_PG_USER: kong KONG_PG_PASSWORD: kong KONG_PG_DATABASE: kong 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 ports:
- "8000:8000" # proxy
- "8443:8443" # proxy ssl
- "8001:8001" # admin api
- "8444:8444" # admin ssl
restart: on-failure
注意:kong-migration 容器只运行一次完成初始化,成功后自动退出;主 kong 容器才提供实际代理与管理能力。
验证部署并注册第一个上游服务
容器就绪后,先确认 Admin API 可用:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
curl -i http://localhost:8001
返回 200 OK 及 JSON 响应即表示 Kong 正常运行。接着添加一个测试服务(例如 mockbin):
curl -i -X POST http://localhost:8001/services \ --data name=mockbin \ --data url=https://mockbin.org
再为其绑定路由:
curl -i -X POST http://localhost:8001/services/mockbin/routes \ --data paths[]=/mockbin \ --data name=mockbin-route
此时访问 http://localhost:8000/mockbin/request 就会经 Kong 代理到 mockbin,说明网关链路已通。
按需启用插件与生产优化
真实场景中,通常需开启鉴权、限流、日志等插件。例如全局启用 key-auth:
curl -i -X POST http://localhost:8001/plugins \ --data name=key-auth \ --data config.key_names=apikey
其他关键建议:
- 禁用默认 Admin API 的公网暴露,仅保留内网或加 Nginx 反向代理 + Basic Auth
- 通过
KONG_DECLARATIVE_CONFIG使用 YAML 声明式配置替代 Admin API,便于 GitOps 管理 - 若需高可用,部署多个 Kong 实例共享同一 PostgreSQL,并配合负载均衡器分发流量
- 避免在容器中持久化数据库,PostgreSQL 数据应挂载
volume或使用云托管服务










