Wan2.2-I2V-A14B生产环境部署:Nginx反向代理与Docker Compose编排

1. 部署目标与前置准备

在开始之前,我们先明确这次部署要实现的目标:通过Docker Compose编排Wan2.2-I2V-A14B模型服务及其依赖组件,使用Nginx作为反向代理,构建一个高可用的生产环境。这个方案能让你轻松管理多个服务,同时确保系统的安全性和稳定性。

你需要准备:

  • 一台Linux服务器(推荐Ubuntu 20.04+)
  • 已安装Docker和Docker Compose
  • 域名和SSL证书(可选,但生产环境强烈建议)
  • 基础命令行操作知识

2. 项目结构与Docker Compose配置

2.1 创建项目目录

首先建立一个清晰的项目目录结构:

mkdir -p wan-i2v-deploy/{config,models,logs,nginx}
cd wan-i2v-deploy

这个结构将包含:

  • config:存放各服务的配置文件
  • models:存放模型文件
  • logs:存放各服务的日志
  • nginx:存放Nginx配置

2.2 编写docker-compose.yml

创建docker-compose.yml文件,这是整个部署的核心:

version: '3.8'

services:
  app:
    image: wan-i2v-a14b:latest
    build: .
    ports:
      - "8000:8000"
    volumes:
      - ./models:/app/models
    environment:
      - REDIS_HOST=redis
      - DB_HOST=db
    depends_on:
      - redis
      - db
    restart: unless-stopped

  redis:
    image: redis:6-alpine
    volumes:
      - ./data/redis:/data
    restart: unless-stopped

  db:
    image: postgres:13-alpine
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=your_secure_password
    restart: unless-stopped

  nginx:
    image: nginx:1.21-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./config/ssl:/etc/nginx/ssl
      - ./logs/nginx:/var/log/nginx
    depends_on:
      - app
    restart: unless-stopped

这个配置定义了四个服务:

  1. app:Wan2.2-I2V-A14B模型服务
  2. redis:缓存服务
  3. db:数据库服务
  4. nginx:反向代理服务

3. Nginx反向代理配置

3.1 基础Nginx配置

nginx/nginx.conf中添加以下配置:

worker_processes auto;

events {
    worker_connections 1024;
}

http {
    upstream app_servers {
        server app:8000;
    }

    server {
        listen 80;
        server_name yourdomain.com;

        location / {
            proxy_pass http://app_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;
    }
}

3.2 添加SSL支持(可选但推荐)

要启用HTTPS,你需要准备SSL证书(可以从Let's Encrypt获取免费证书),然后在Nginx配置中添加:

server {
    listen 443 ssl;
    server_name yourdomain.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://app_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

4. 模型服务Dockerfile

在项目根目录创建Dockerfile来构建模型服务:

FROM python:3.9-slim

WORKDIR /app

# 安装系统依赖
RUN apt-get update && apt-get install -y \
    build-essential \
    && rm -rf /var/lib/apt/lists/*

# 复制依赖文件并安装
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制模型文件和代码
COPY models/ ./models/
COPY . .

# 暴露端口
EXPOSE 8000

# 启动命令
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]

5. 部署与启动

5.1 构建并启动服务

运行以下命令启动所有服务:

docker-compose build
docker-compose up -d

5.2 验证服务运行

检查服务状态:

docker-compose ps

你应该看到所有服务都处于"running"状态。可以通过以下命令查看日志:

docker-compose logs -f

5.3 测试API端点

使用curl测试API是否正常工作:

curl http://localhost/api/v1/status

如果配置了域名和HTTPS,可以用:

curl https://yourdomain.com/api/v1/status

6. 生产环境优化建议

6.1 性能调优

根据你的服务器配置,可以调整以下参数:

  • 在docker-compose.yml中为app服务添加资源限制:
    deploy:
      resources:
        limits:
          cpus: '2'
          memory: 4G
    
  • 调整Gunicorn工作进程数(在Dockerfile的CMD中):
    CMD ["gunicorn", "--workers", "4", "--threads", "2", "--bind", "0.0.0.0:8000", "app:app"]
    

6.2 监控与日志

建议添加监控服务如Prometheus和Grafana,可以修改docker-compose.yml添加:

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./config/prometheus.yml:/etc/prometheus/prometheus.yml
    restart: unless-stopped

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
    restart: unless-stopped

volumes:
  grafana-storage:

6.3 备份策略

定期备份重要数据:

  • 数据库:使用pg_dump定期备份PostgreSQL数据
  • 模型文件:定期同步到云存储
  • 配置:使用版本控制系统管理

7. 总结

通过这套部署方案,我们实现了Wan2.2-I2V-A14B模型在生产环境的高可用运行。Docker Compose让多服务管理变得简单,Nginx提供了灵活的反向代理和负载均衡能力。实际部署时,建议根据你的具体需求调整资源配置和安全设置。这套架构也易于扩展,未来可以方便地添加更多服务或调整规模。

遇到问题时,首先检查各容器的日志,大多数部署问题都能从中找到线索。随着业务增长,你可能需要考虑更复杂的编排工具如Kubernetes,但对于大多数中小规模应用,这个方案已经足够稳定和高效。


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐