# Xiaozhi Client Docker 开发环境 # 基于 Node.js 22 的开发容器,用于运行本地构建的 xiaozhi-client FROM node:22 # 安装必要的系统依赖 RUN apt-get update && apt-get install -y \ dumb-init \ git \ ffmpeg \ && rm -rf /var/lib/apt/lists/* \ && groupadd -g 1001 xiaozhi \ && useradd -r -u 1001 -g xiaozhi xiaozhi # 设置工作目录 WORKDIR /workspaces # 复制模板作为初始项目结构 COPY templates/ ./ # 安装模板项目的依赖 RUN npm install # 创建 /app 目录并设置权限 RUN mkdir -p /app && chown -R xiaozhi:xiaozhi /workspaces /app # 切换回 root 用户创建启动脚本 USER root RUN echo '#!/bin/bash\nexec node /app/dist/backend/cli.js "$@"' > /usr/local/bin/xiaozhi && \ chmod +x /usr/local/bin/xiaozhi # 切换到非 root 用户 USER xiaozhi # 设置工作目录为项目目录 WORKDIR /app # 暴露端口 EXPOSE 9999 3000 # 设置环境变量 ENV NODE_ENV=development ENV XIAOZHI_WORKSPACE=/workspaces ENV XIAOZHI_CONTAINER=true ENV XIAOZHI_CONFIG_DIR=/workspaces # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD xiaozhi --version || exit 1 # 使用 dumb-init 作为 PID 1 进程 ENTRYPOINT ["dumb-init", "--"] # 启动命令,与生产环境保持一致 CMD ["xiaozhi", "start", "--ui"]