怎么利用Docker实现容器化的微服务网关Kong部署

风宇同学_3507

风宇同学_3507

2026-04-17

719人浏览

原创

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

怎么利用docker实现容器化的微服务网关kong部署

用 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版(适配极空间)
minimax-mcp-docker版(适配极空间)

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 或使用云托管服务

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

docker

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

645

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4419

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5277

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

1973

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

219

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

391

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

360

26

Go Docker与容器化部署教程合集
Go Docker与容器化部署教程合集

聚焦 Go 应用的容器化部署优势与实践,讲解 Go 静态编译特性(CGO_ENABLED=0)与 scratch / distroless 极小基础镜像构建、多阶段 Dockerfile 编写规范、交叉编译生成目标平台二进制、镜像安全扫描(Trivy)与漏洞修复、Docker Compose 本地编排开发环境、Kubernetes Deployment / Service / ConfigMap 部署 Go 服务、健康检查(Livene

2026.05.15

265

24

Hyperf 项目部署运维与性能调优手册
Hyperf 项目部署运维与性能调优手册

聚焦 Hyperf 在生产环境的落地,包含 Docker 高效打包、Swoole 配置优化、常见的内存溢出(OOM)问题排查方法以及热更新方案。

2026.05.19

365

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpMyAdmin 安装文档
phpMyAdmin 安装文档

共0课时 | 0人学习

Docker 官方文档
Docker 官方文档

共0课时 | 0人学习

宝塔 Docker 模块使用手册
宝塔 Docker 模块使用手册

共0课时 | 0人学习