Docker-compose 部署vllm-openai+deepseek+open-webui
services:
vllm-server:
container_name: vllm-server
image: vllm/vllm-openai:latest
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- ./vllm/models:/models
command: [
"--model", "/models/DeepSeek-R1-Distill-Qwen-7B",
"--served-model-name", "DeepSeek-R1-Distill-Qwen-7B",
"--tensor-parallel-size", "1",
"--dtype", "float16",
"--max-model-len", "2048",
"--max-num-seqs", "4",
"--disable-log-stats",
"--gpu-memory-utilization", "0.80",
"--host", "0.0.0.0",
"--port", "8000",
"--api-key", "Pass@w0rd",
"--trust-remote-code",
"--enforce-eager"
]
ipc: host
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
networks:
- ai-network
openwebui:
image: ghcr.io/open-webui/open-webui:main
container_name: openwebui
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./openwebui/data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://vllm-server:8000
- OPENAI_API_BASE_URL=http://vllm-server:8000/v1
- DEFAULT_MODEL=DeepSeek-R1-Distill-Qwen-7B
- OPENAI_API_KEY=Pass@w0rd
- WEBUI_SECRET_KEY=Pass@w0rd
- DEFAULT_USER_ROLE=admin
- ENABLE_SIGNUP=true
- DISABLE_FOLLOW_UPS=true
- DISABLE_TITLE_GENERATION=true
- DISABLE_CHAT_TAGS=true
depends_on:
- vllm-server
networks:
- ai-network
networks:
ai-network:
driver: bridge
验证步骤
1. 检查 vLLM 服务
# 查看 vLLM 日志
docker-compose logs vllm-server
# 测试 vLLM API
curl -s http://localhost:8000/v1/models -H "Authorization: Bearer Pass@w0rd"
2. 检查 OpenWebUI 服务
# 查看 OpenWebUI 日志
docker-compose logs openwebui
# 访问 Web 界面
# http://localhost:8063
常见问题排查
问题1:模型文件不存在
症状: vLLM 启动失败,提示模型文件不存在
解决: 确保模型文件位于 ./vllm/models/DeepSeek-R1-Distill-Qwen-7B/ 目录下
问题2:网络连接失败
症状: OpenWebUI 无法连接到 vLLM 服务
解决: 检查容器网络,确保使用容器名称而非 IP 地址
问题3:API 密钥错误
症状: 认证失败
解决: 确保 API 密钥 Pass@w0rd 在两端配置一致
问题4:GPU 资源不足
症状: vLLM 启动失败或性能差
解决: 调整 --gpu-memory-utilization 参数
优化项:
1. 禁用后台任务
添加了以下环境变量来禁用导致 400 错误的后台任务:
- DISABLE_FOLLOW_UPS=true
- DISABLE_TITLE_GENERATION=true
- DISABLE_CHAT_TAGS=true
2. 优化 vLLM 配置
- 增加
--max-model-len到 2048 - 增加
--max-num-seqs到 4 - 添加
--trust-remote-code和--enforce-eager - 优化 GPU 使用率到 0.80
3. 添加 OpenWebUI 配置
- 添加
WEBUI_SECRET_KEY - 设置
DEFAULT_USER_ROLE=admin - 启用
ENABLE_SIGNUP=true
验证修复结果
- 访问 OpenWebUI:
http://localhost:8063 - 测试基本聊天功能
- 检查是否还有 400 错误
调试命令
# 进入 vLLM 容器
docker exec -it vllm-server bash
# 进入 OpenWebUI 容器
作者:一毛
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
不管遇到了什么烦心事,都不要自己为难自己;无论今天发生多么糟糕的事,都不应该感到悲伤。记住一句话:越努力,越幸运。

浙公网安备 33010602011771号