别再手动折腾了用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核心流量路由与插件执行9080etcd配置存储与服务发现2379APISIX 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/adminhttp://服务器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 apisix4. 实战集成DolphinScheduler API4.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 Tokencurl http://127.0.0.1:9080/apisix/plugin/jwt/sign?keyuser-key携带Token访问APIcurl http://127.0.0.1:9080/dolphinscheduler/projects \ -H Authorization: Bearer your-jwt-token5. 生产环境优化建议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 pid6.2 路由配置不生效检查流程确认配置已提交到etcdcurl http://127.0.0.1:9080/apisix/admin/routes -H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1检查APISIX错误日志docker-compose logs apisix6.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之前可以避免无效请求消耗认证资源。