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 地址可访问