feat(xiaozhi): 新增小智 AI 一键运行 Docker 镜像
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
FROM python:3.12-slim AS builder
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
# 更新源
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
curl build-essential libopus-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# 安装 Rust
|
||||
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
|
||||
# 安装 uv
|
||||
COPY --from=ghcr.io/astral-sh/uv:0.7 /uv /uvx /bin/
|
||||
|
||||
# 设置环境变量
|
||||
ENV BASH_ENV=/root/.bash_env
|
||||
RUN touch "$BASH_ENV"
|
||||
RUN echo '. "$BASH_ENV"' >> "$HOME/.bashrc"
|
||||
RUN echo '[ -s "$HOME/.cargo/env" ] && . "$HOME/.cargo/env"' >> "$BASH_ENV"
|
||||
|
||||
# 设置工作目录
|
||||
WORKDIR /app
|
||||
|
||||
# 复制项目文件
|
||||
COPY examples/xiaozhi .
|
||||
COPY packages/client-rust ./client-rust
|
||||
|
||||
# 构建
|
||||
RUN sed -i 's/\.\.\/\.\.\/packages\///g' Cargo.toml \
|
||||
&& cargo build --release
|
||||
|
||||
# 安装依赖
|
||||
RUN --mount=type=cache,target=/root/.cache/uv \
|
||||
uv remove pyaudio && uv sync --locked --no-install-project --no-editable
|
||||
|
||||
# 构建 wheel 并安装
|
||||
RUN uv run maturin build --release && uv remove maturin
|
||||
|
||||
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# 更新源
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
libopus-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV CLI=true
|
||||
|
||||
COPY --from=builder /app/.venv /app/.venv
|
||||
COPY examples/xiaozhi/main.py .
|
||||
COPY examples/xiaozhi/xiaozhi ./xiaozhi
|
||||
|
||||
# 先初始化关键词模型,然后启动主程序
|
||||
CMD ["/bin/bash", "-c", "source /app/.venv/bin/activate && python xiaozhi/services/audio/kws/keywords.py && python main.py"]
|
||||
Reference in New Issue
Block a user