z2api / deploy /DOCKER.md
ZyphrZero
Initial commit
f0cacfe
|
raw
history blame
2.95 kB

Docker部署指南

文件说明

  • Dockerfile.python - 基础版本的Dockerfile
  • Dockerfile.python.optimized - 多阶段构建,镜像更小
  • docker-compose.yml - Docker Compose配置文件
  • .dockerignore - Docker构建时忽略的文件
  • test-page/ - 简单的Web测试界面

快速开始

1. 构建并运行(使用docker-compose)

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

2. 仅使用Docker

# 构建镜像
docker build -f Dockerfile.python.optimized -t openai-proxy-python .

# 运行容器
docker run -d \
  --name openai-proxy \
  -p 8080:8080 \
  openai-proxy-python

3. 带测试界面的完整部署

# 启动服务和测试界面
docker-compose --profile test-ui up -d

# 访问测试界面
# 打开浏览器访问 http://localhost:8081

环境变量配置

可以通过环境变量覆盖默认配置:

# 在docker-compose.yml中添加
environment:
  - DEBUG_MODE=false
  - PORT=8080
  - DEFAULT_KEY=your-api-key
  - UPSTREAM_TOKEN=your-upstream-token

或者使用.env文件:

# 创建.env文件
echo "DEBUG_MODE=false" > .env
echo "DEFAULT_KEY=sk-your-custom-key" >> .env

# 启动时自动加载
docker-compose up -d

生产环境建议

  1. 使用优化版Dockerfile

    docker build -f Dockerfile.python.optimized -t openai-proxy:latest .
    
  2. 配置HTTPS 建议在反向代理(如Nginx)中配置SSL证书

  3. 使用Docker Secrets管理敏感信息

    secrets:
      api_key:
        file: ./secrets/api_key.txt
      upstream_token:
        file: ./secrets/upstream_token.txt
    
  4. 设置资源限制

    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
    

常用命令

# 查看容器状态
docker ps

# 查看日志
docker logs openai-proxy

# 进入容器
docker exec -it openai-proxy bash

# 重新构建
docker-compose build

# 完全清理
docker-compose down -v --rmi all

故障排除

  1. 端口冲突

    • 修改docker-compose.yml中的端口映射
    • 或者停止占用8080端口的程序
  2. 镜像构建失败

    • 确保Docker版本 >= 19.03
    • 检查网络连接
  3. 容器启动失败

    • 查看日志:docker logs openai-proxy
    • 检查配置文件语法
  4. API请求失败

    • 确认容器正在运行
    • 检查防火墙设置
    • 验证API密钥配置

测试API

容器启动后,可以测试API:

# 测试模型列表
curl -X GET http://localhost:8080/v1/models \
  -H "Authorization: Bearer sk-tbkFoKzk9a531YyUNNF5"

# 测试聊天接口
curl -X POST http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-tbkFoKzk9a531YyUNNF5" \
  -d '{"model": "GLM-4.5", "messages": [{"role": "user", "content": "Hello"}]}'