Docker 部署
使用 Docker 快速部署 GPT-Load,适合各种环境和生产需求
快速开始
🐳 为什么选择 Docker?
- • 环境一致性,避免“在我机器上能运行”的问题
- • 简化部署流程,一键启动
- • 易于扩展和管理
- • 支持容器编排(Docker Swarm、Kubernetes)
1. 拉取最新镜像
# 拉取最新版本
docker pull ghcr.io/tbphp/gpt-load:latest
# 查看镜像信息
docker images ghcr.io/tbphp/gpt-load
2. 准备配置文件
# 创建密钥文件
echo "sk-your-openai-key-1" > keys.txt
echo "sk-your-openai-key-2" >> keys.txt
echo "sk-your-openai-key-3" >> keys.txt
# 创建日志目录(可选)
mkdir -p logs
# 验证文件内容
cat keys.txt
3. 启动容器
# 基础启动
docker run -d \
--name gpt-load \
-p 3000:3000 \
-v $(pwd)/keys.txt:/app/keys.txt:ro \
ghcr.io/tbphp/gpt-load:latest
# 带环境变量启动
docker run -d \
--name gpt-load \
-p 3000:3000 \
-v $(pwd)/keys.txt:/app/keys.txt:ro \
-v $(pwd)/logs:/app/logs \
-e LOG_LEVEL=info \
-e MAX_CONCURRENT_REQUESTS=100 \
-e ENABLE_CORS=true \
ghcr.io/tbphp/gpt-load:latest
Docker Compose 部署
推荐使用 Docker Compose 进行生产环境部署,便于管理和维护。
创建 docker-compose.yml
version: '3.8'
services:
gpt-load:
image: ghcr.io/tbphp/gpt-load:latest
container_name: gpt-load
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./keys.txt:/app/keys.txt:ro
- ./logs:/app/logs
- ./.env:/app/.env:ro
environment:
- LOG_LEVEL=info
- LOG_ENABLE_FILE=true
- LOG_FILE_PATH=/app/logs/app.log
- MAX_CONCURRENT_REQUESTS=100
- ENABLE_CORS=true
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- gpt-load-network
networks:
gpt-load-network:
driver: bridge
管理命令
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f
# 查看服务状态
docker-compose ps
# 重启服务
docker-compose restart
# 停止服务
docker-compose down
# 更新镜像
docker-compose pull
docker-compose up -d
高级配置
多实例负载均衡
在高并发场景下,可以运行多个 GPT-Load 实例:
version: '3.8'
services:
gpt-load-1:
image: ghcr.io/tbphp/gpt-load:latest
restart: unless-stopped
volumes:
- ./keys.txt:/app/keys.txt:ro
environment:
- PORT=3000
- START_INDEX=0
gpt-load-2:
image: ghcr.io/tbphp/gpt-load:latest
restart: unless-stopped
volumes:
- ./keys.txt:/app/keys.txt:ro
environment:
- PORT=3000
- START_INDEX=1
nginx:
image: nginx:alpine
ports:
- "3000:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- gpt-load-1
- gpt-load-2
自定义镜像构建
如果需要自定义配置,可以基于官方镜像构建:
# Dockerfile
FROM ghcr.io/tbphp/gpt-load:latest
# 复制自定义配置
COPY keys.txt /app/keys.txt
COPY .env /app/.env
# 设置默认环境变量
ENV LOG_LEVEL=info
ENV MAX_CONCURRENT_REQUESTS=100
EXPOSE 3000
# 构建镜像
docker build -t my-gpt-load .
# 运行自定义镜像
docker run -d -p 3000:3000 my-gpt-load
监控和日志
容器监控
# 查看容器状态
docker ps
# 查看容器资源使用
docker stats gpt-load
# 查看容器日志
docker logs gpt-load
# 实时查看日志
docker logs -f gpt-load
# 进入容器
docker exec -it gpt-load sh
健康检查
# 检查健康状态
curl http://localhost:3000/health
# 查看统计信息
curl http://localhost:3000/stats
# 查看黑名单
curl http://localhost:3000/blacklist
# 重置密钥状态
curl http://localhost:3000/reset-keys
常见问题排查
容器启动失败
- • 检查端口是否被占用:
netstat -tlnp | grep 3000
- • 验证密钥文件路径和权限
- • 查看容器日志:
docker logs gpt-load
性能问题
- • 适当调整
MAX_CONCURRENT_REQUESTS
- • 监控容器资源使用:
docker stats
- • 考虑运行多个实例进行负载均衡
网络问题
- • 检查防火墙设置
- • 验证 Docker 网络配置
- • 确保上游 API 地址可访问