Calcium-Ion/new-api项目Docker Compose部署指南
2025-07-07 01:43:41作者:秋阔奎Evelyn
项目概述
Calcium-Ion/new-api是一个基于容器化技术的API服务项目,采用微服务架构设计,包含API主服务、Redis缓存服务和MySQL数据库服务。本指南将详细解析项目的Docker Compose配置文件,帮助开发者理解如何部署和配置这套服务。
核心服务架构
项目采用典型的三层架构设计:
- API服务层:基于calciumion/new-api镜像的主服务
- 缓存层:使用Redis提供高速缓存支持
- 数据持久层:MySQL数据库存储核心业务数据
配置文件详解
主API服务配置
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
command: --log-dir /app/logs
ports:
- "3000:3000"
volumes:
- ./data:/data
- ./logs:/app/logs
- 镜像选择:使用项目官方构建的最新版镜像
- 自动重启:配置为always确保服务异常退出后自动恢复
- 日志管理:通过volume挂载将日志持久化到宿主机
- 端口映射:3000端口对外提供服务
环境变量配置
environment:
- SQL_DSN=root:123456@tcp(mysql:3306)/new-api
- REDIS_CONN_STRING=redis://redis
- TZ=Asia/Shanghai
- ERROR_LOG_ENABLED=true
关键配置说明:
- 数据库连接:使用MySQL服务,用户名root,密码123456
- Redis连接:使用内部DNS名称redis连接Redis服务
- 时区设置:Asia/Shanghai确保日志时间正确
- 错误日志:启用错误日志记录功能
健康检查机制
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $$2}'"]
interval: 30s
timeout: 10s
retries: 3
健康检查通过调用API的/status端点,验证返回JSON中包含"success": true,确保服务正常运行。
依赖服务配置
Redis服务
redis:
image: redis:latest
container_name: redis
restart: always
使用官方Redis最新镜像,配置自动重启策略。
MySQL服务
mysql:
image: mysql:8.2
container_name: mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: new-api
volumes:
- mysql_data:/var/lib/mysql
关键配置:
- 使用MySQL 8.2版本
- 设置root密码为123456(与API服务配置一致)
- 自动创建new-api数据库
- 数据卷持久化存储数据库文件
部署建议
-
安全加固:
- 修改默认数据库密码
- 考虑启用MySQL的SSL连接
- 在生产环境设置SESSION_SECRET环境变量
-
性能调优:
- 根据负载调整STREAMING_TIMEOUT参数
- 配置适当的数据库连接池大小
-
高可用方案:
- 注释掉的NODE_TYPE和SYNC_FREQUENCY参数可用于多节点部署
- 考虑添加Redis持久化配置
-
监控方案:
- 结合ERROR_LOG_ENABLED配置日志监控
- 通过健康检查端点实现服务监控
常见问题解决
-
连接问题:
- 确保MySQL和Redis服务先于API服务启动
- 验证depends_on配置
-
性能问题:
- 调整STREAMING_TIMEOUT解决空补全问题
- 检查日志卷是否影响IO性能
-
时区问题:
- 确保所有服务使用一致的TZ设置
通过本指南,开发者可以全面理解Calcium-Ion/new-api项目的Docker Compose配置,并根据实际需求进行调整和优化。