别再手动折腾了!用Docker Compose一键部署APISIX网关(附DolphinScheduler实战配置)
2026/5/12 16:41:13 网站建设 项目流程

别再手动折腾了!用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-compose

2.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>:9000

3. 深度解析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测试网关路由:

  1. 获取JWT Token:

    curl http://127.0.0.1:9080/apisix/plugin/jwt/sign?key=user-key
  2. 携带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: 60s

5.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集群 | +----------+

实现步骤:

  1. 部署etcd集群(3节点或5节点)
  2. 修改config.yaml中的etcd端点配置
  3. 各APISIX节点使用相同配置启动

6. 常见问题排查指南

6.1 容器启动失败

典型错误及解决方案:

  • etcd权限问题

    chmod -R 777 etcd_data
  • 端口冲突

    # 查看端口占用 netstat -tulnp | grep 9080 # 释放端口 kill -9 <pid>

6.2 路由配置不生效

检查流程:

  1. 确认配置已提交到etcd:
    curl http://127.0.0.1:9080/apisix/admin/routes -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1'
  2. 检查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之前,可以避免无效请求消耗认证资源。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询