78 lines
2.1 KiB
YAML
78 lines
2.1 KiB
YAML
version: '3.8'
|
||
|
||
services:
|
||
aiglass:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
container_name: aiglass
|
||
restart: unless-stopped
|
||
|
||
# 端口映射
|
||
ports:
|
||
- "8081:8081" # Web 服务
|
||
- "12345:12345/udp" # IMU UDP
|
||
|
||
# 环境变量(从 .env 文件读取)
|
||
environment:
|
||
- DASHSCOPE_API_KEY=${DASHSCOPE_API_KEY}
|
||
- BLIND_PATH_MODEL=${BLIND_PATH_MODEL:-model/yolo-seg.pt}
|
||
- OBSTACLE_MODEL=${OBSTACLE_MODEL:-model/yoloe-11l-seg.pt}
|
||
- YOLOE_MODEL_PATH=${YOLOE_MODEL_PATH:-model/yoloe-11l-seg.pt}
|
||
- ENABLE_TTS=${ENABLE_TTS:-true}
|
||
- TTS_INTERVAL_SEC=${TTS_INTERVAL_SEC:-1.0}
|
||
- LOG_LEVEL=${LOG_LEVEL:-INFO}
|
||
|
||
# 卷挂载
|
||
volumes:
|
||
- ./model:/app/model:ro # 模型文件(只读)
|
||
- ./recordings:/app/recordings # 录制文件
|
||
- ./music:/app/music:ro # 音频文件(只读)
|
||
- ./voice:/app/voice:ro # 语音文件(只读)
|
||
- ./static:/app/static:ro # 静态文件(只读)
|
||
- ./templates:/app/templates:ro # 模板文件(只读)
|
||
|
||
# GPU 支持(需要 nvidia-docker)
|
||
deploy:
|
||
resources:
|
||
reservations:
|
||
devices:
|
||
- driver: nvidia
|
||
count: 1
|
||
capabilities: [gpu]
|
||
|
||
# 依赖服务(可选,如需添加数据库等)
|
||
# depends_on:
|
||
# - redis
|
||
|
||
# 网络模式
|
||
network_mode: bridge
|
||
|
||
# 健康检查
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:8081/api/health"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
start_period: 40s
|
||
|
||
# 可选:添加 Redis 用于缓存
|
||
# redis:
|
||
# image: redis:7-alpine
|
||
# container_name: aiglass-redis
|
||
# restart: unless-stopped
|
||
# ports:
|
||
# - "6379:6379"
|
||
# volumes:
|
||
# - redis-data:/data
|
||
|
||
# 可选:数据卷
|
||
# volumes:
|
||
# redis-data:
|
||
|
||
# 可选:自定义网络
|
||
# networks:
|
||
# aiglass-network:
|
||
# driver: bridge
|
||
|