86 lines
2.4 KiB
YAML
86 lines
2.4 KiB
YAML
services:
|
|
xiaozhi-client:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.dev
|
|
args:
|
|
- DOCKERIGNORE_FILE=.dockerignore.dev
|
|
image: xiaozhi-client:dev
|
|
container_name: xiaozhi-client-dev
|
|
restart: unless-stopped
|
|
|
|
# 端口映射(支持 IPv4 和 IPv6)
|
|
ports:
|
|
- "9999:9999" # Web UI 端口
|
|
- "3000:3000" # 备用端口
|
|
|
|
# 环境变量
|
|
environment:
|
|
- NODE_ENV=development
|
|
- XIAOZHI_WORKSPACE=/workspaces
|
|
- XIAOZHI_CONTAINER=true
|
|
- XIAOZHI_CONFIG_DIR=/workspaces
|
|
# 强制覆盖 CLI 代码中的 process.cwd() 逻辑
|
|
- FORCE_CONFIG_DIR=/workspaces
|
|
|
|
# 挂载卷
|
|
volumes:
|
|
# 挂载构建产物和必要文件(基于 package.json 的 files 字段)
|
|
- ./dist:/app/dist # 主项目构建产物
|
|
- ./web/dist:/app/web/dist # Web界面构建产物
|
|
- ./templates:/app/templates # 模板文件
|
|
- ./docs:/app/docs # 文档文件
|
|
- ./package.json:/app/package.json # package.json 文件
|
|
- ./README.md:/app/README.md # README 文件
|
|
- ./LICENSE:/app/LICENSE # LICENSE 文件
|
|
# 挂载运行时依赖
|
|
- ./node_modules:/app/node_modules # 运行时依赖
|
|
# 日志文件持久化
|
|
- ./logs:/workspaces/logs
|
|
# 日志文件持久化(主日志文件)
|
|
- ./xiaozhi.log:/workspaces/xiaozhi.log
|
|
# 配置文件持久化(可选,用户可以自定义配置)
|
|
- ./config:/workspaces/config
|
|
|
|
# 健康检查 (开发环境需要更长的启动时间)
|
|
healthcheck:
|
|
test: ["CMD", "xiaozhi", "--version"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 120s # 开发环境需要时间构建和链接
|
|
|
|
# 网络配置
|
|
networks:
|
|
- xiaozhi-network
|
|
|
|
# 资源限制 (开发环境需要更多内存用于构建)
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 4G
|
|
cpus: '2.0'
|
|
reservations:
|
|
memory: 1G
|
|
cpus: '1.0'
|
|
|
|
# 网络配置(支持 IPv4 和 IPv6)
|
|
networks:
|
|
xiaozhi-network:
|
|
driver: bridge
|
|
enable_ipv6: true
|
|
ipam:
|
|
driver: default
|
|
config:
|
|
- subnet: 172.20.0.0/24
|
|
gateway: 172.20.0.1
|
|
- subnet: fd00:abcd::/64
|
|
gateway: fd00:abcd::1
|
|
|
|
# 卷配置
|
|
volumes:
|
|
xiaozhi-config:
|
|
driver: local
|
|
xiaozhi-logs:
|
|
driver: local
|