Files
2026-07-13 12:35:20 +08:00

56 lines
1.3 KiB
Docker

# 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"]