56 lines
1.3 KiB
Docker
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"]
|