别再手动折腾了!用Docker Compose一键部署APISIX网关(附DolphinScheduler实战配置)
在微服务架构盛行的今天,API网关已成为系统不可或缺的"交通枢纽"。但每次搭建网关都要经历安装、配置、调试的繁琐循环,尤其当需要集成etcd、Dashboard等组件时,手动操作不仅耗时耗力,还容易出错。本文将带你用Docker Compose实现APISIX网关的一键式部署,并重点演示如何快速对接DolphinScheduler调度系统,让API管理变得轻松高效。
1. 为什么选择Docker Compose部署APISIX?
传统部署方式需要分别安装OpenResty、etcd、Dashboard等多个组件,配置复杂且容易遗漏依赖项。而Docker Compose方案具有三大核心优势:
- 环境隔离:所有组件运行在独立容器中,避免污染主机环境
- 一键启停:通过
docker-compose命令即可管理整个网关集群 - 配置即代码:
docker-compose.yml文件记录完整环境配置,方便版本控制
APISIX官方提供的Docker镜像已预集成以下组件:
| 组件 | 作用 | 默认端口 |
|---|---|---|
| APISIX核心 | 流量路由与插件执行 | 9080 |
| etcd | 配置存储与服务发现 | 2379 |
| APISIX Dashboard | 可视化配置管理界面 | 9000 |
| 示例后端服务 | 用于验证路由功能的测试服务 | 9081/9082 |
提示:生产环境中建议将etcd数据目录挂载到宿主机持久化存储,避免容器重启导致配置丢失。
2. 快速搭建APISIX网关环境
2.1 准备Docker环境
确保系统已安装Docker 20.10+和Docker Compose 1.28+。可通过以下命令验证:
# 检查Docker版本 docker --version # 检查Compose版本 docker-compose --version若未安装,可通过官方脚本快速安装:
# Docker安装(Linux) curl -fsSL https://get.docker.com | sh # Docker Compose安装 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose2.2 部署APISIX集群
官方提供的apisix-docker项目已包含完整Compose配置:
# 克隆仓库 git clone https://github.com/apache/apisix-docker.git cd apisix-docker/example # 解决etcd权限问题(Linux/Mac需执行) chmod -R 777 . # 启动服务(-p指定项目名称) docker-compose -p my-apisix up -d启动完成后,检查容器状态:
docker-compose ps正常应看到5个服务运行:
apisix:网关核心etcd:配置存储apisix-dashboard:管理界面web1/web2:测试用后端服务
2.3 验证安装
通过Admin API检查APISIX状态:
curl "http://127.0.0.1:9080/apisix/admin/services/" \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'访问Dashboard(默认账号admin/admin):
http://<服务器IP>:90003. 深度解析Compose配置
example目录中的关键文件结构:
├── docker-compose.yml # 主配置文件 ├── etcd_data # etcd数据存储目录 ├── logs # 各组件日志目录 └── config ├── config.yaml # APISIX主配置 └── dashboard_conf # Dashboard配置重点配置项说明:
services: apisix: image: apache/apisix:2.14.1-alpine ports: - "9080:9080" # HTTP代理端口 - "9091:9091" # Admin API端口 volumes: - ./config/config.yaml:/usr/local/apisix/conf/config.yaml - ./logs/apisix:/usr/local/apisix/logs depends_on: - etcd注意:修改
config.yaml后需重启APISIX容器使配置生效:docker-compose restart apisix
4. 实战:集成DolphinScheduler API
4.1 配置上游服务
首先在Dashboard或通过API创建上游(Upstream),指向DolphinScheduler服务地址:
{ "nodes": [ { "host": "ds-host", // DolphinScheduler服务器IP "port": 12345, // 服务端口 "weight": 1 } ], "type": "roundrobin", "scheme": "http", "name": "dolphinscheduler-backend" }4.2 创建路由规则
配置路由将特定路径转发到上游服务:
{ "uri": "/dolphinscheduler/*", "name": "ds-route", "methods": ["GET", "POST", "PUT", "DELETE"], "upstream_id": "your-upstream-id", "plugins": { "cors": { "allow_origins": "*", "allow_methods": "*" } } }4.3 高级安全配置
为保护DolphinScheduler API,可添加鉴权插件:
"plugins": { "jwt-auth": { "key": "user-key", "secret": "your-strong-secret", "algorithm": "HS256" }, "limit-count": { "count": 100, "time_window": 60, "rejected_code": 429 } }4.4 测试与验证
使用Postman测试网关路由:
获取JWT Token:
curl http://127.0.0.1:9080/apisix/plugin/jwt/sign?key=user-key携带Token访问API:
curl http://127.0.0.1:9080/dolphinscheduler/projects \ -H 'Authorization: Bearer <your-jwt-token>'
5. 生产环境优化建议
5.1 性能调优参数
在config.yaml中添加Nginx优化配置:
nginx_config: worker_processes: auto worker_connections: 10240 keepalive_timeout: 60s client_header_timeout: 60s client_body_timeout: 60s5.2 监控与日志
启用Prometheus插件收集指标:
curl http://127.0.0.1:9080/apisix/admin/plugins/reload \ -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'日志建议配置:
- 使用
fluentd插件推送日志到ELK - 设置日志轮转防止磁盘写满
5.3 高可用部署方案
多节点APISIX集群架构:
+----------+ | SLB/ELB | +-----+----+ | +----------------+----------------+ | | | +-------+-----+ +-------+-----+ +-------+-----+ | APISIX Node1| | APISIX Node2| | APISIX Node3| +-------------+ +-------------+ +-------------+ | | | +----------------+----------------+ | +-----+----+ | etcd集群 | +----------+实现步骤:
- 部署etcd集群(3节点或5节点)
- 修改
config.yaml中的etcd端点配置 - 各APISIX节点使用相同配置启动
6. 常见问题排查指南
6.1 容器启动失败
典型错误及解决方案:
etcd权限问题:
chmod -R 777 etcd_data端口冲突:
# 查看端口占用 netstat -tulnp | grep 9080 # 释放端口 kill -9 <pid>
6.2 路由配置不生效
检查流程:
- 确认配置已提交到etcd:
curl http://127.0.0.1:9080/apisix/admin/routes -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' - 检查APISIX错误日志:
docker-compose logs apisix
6.3 性能瓶颈分析
使用内置工具定位问题:
# 实时监控请求 curl http://127.0.0.1:9091/status # 生成性能报告 apisix benchmark -c 100 -n 10000 http://127.0.0.1:9080/dolphinscheduler/projects在项目实践中发现,合理配置插件执行顺序能显著提升性能。例如将limit-count插件放在jwt-auth之前,可以避免无效请求消耗认证资源。