69d948de887d2bf3091d676c8ec012cd7f63e10e
数字人对接中转服务
基于 Docker Compose 部署的数字人对接中转服务,连接客户端与 Dify LLM 平台。
架构
Client --> digital-human (8000) --> Dify LLM Platform
|
+--> Redis (6379)
快速部署
1. 配置环境变量
cp .env.example .env
# 编辑 .env,填入 DIFY_URL 和 DIFY_API_KEY
2. 启动服务
docker compose up -d
3. 验证服务
# 健康检查
curl http://localhost:8000/health
# 转发测试(chat/completions)
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "dify",
"messages": [{"role": "user", "content": "你好"}]
}'
端口说明
| 端口 | 服务 | 说明 |
|---|---|---|
${DH_PORT:-8000} |
digital-human | 中转服务,对外暴露(可通过 DH_PORT 自定义) |
| — | Redis | 默认不暴露,仅在 Docker Compose 内部网络互通 |
环境变量
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
DIFY_URL |
是 | - | Dify 服务地址,如 https://xxx.com/v1 |
DIFY_API_KEY |
是 | - | Dify API 密钥 |
DH_PORT |
否 | 8000 |
宿主机映射端口(如设为 9000 则访问 http://IP:9000) |
REDIS_HOST |
否 | redis |
Redis 主机(Docker Compose 内部 DNS,始终有效) |
REDIS_PORT |
否 | 6379 |
Redis 端口 |
REDIS_EXPOSE_PORT |
否 | 不暴露 | 需要暴露时在 .env 中设置(如 6379),配合 docker-compose.redis-expose.yml 使用 |
Redis 端口暴露(可选)
默认情况下 Redis 不占用宿主机任何端口,digital-human 通过 Docker Compose 内部 DNS 直连。如需从宿主机直连 Redis(如本地调试),执行以下命令:
# 启动时合并 Redis 暴露配置
docker compose -f docker-compose.yml -f docker-compose.redis-expose.yml up -d
# 宿主机即可访问
redis-cli -h localhost -p 6379
生产部署注意事项
- 防火墙:确保服务器 TCP 8000 端口对外部开放
- HTTPS:生产环境建议在
digital-human前加一层 Nginx/Caddy 反向代理, termination TLS - 环境变量:不要将密钥提交到代码仓库,
.env已加入.gitignore - Redis:生产环境可移除内建 Redis,连接外部 Redis 集群
目录结构
.
├── docker-compose.yml # 主容器编排(Redis 默认内部模式)
├── docker-compose.redis-expose.yml # Redis 端口暴露扩展(按需合并)
├── Dockerfile # 应用镜像构建
├── digital-human.py # FastAPI 中转服务源码
├── requirements.txt # Python 依赖
├── .env.example # 环境变量模板
└── README.md # 本文件
Description
Languages
HTML
60.6%
Python
32.2%
Dockerfile
4.5%
Shell
2.7%