From e24b03362368dd871ff8b9c97cc3d8963854b6bc Mon Sep 17 00:00:00 2001 From: hrz <1710360675@qq.com> Date: Thu, 6 Feb 2025 11:01:05 +0800 Subject: [PATCH] =?UTF-8?q?update:=E4=BC=98=E5=8C=96docker=E7=BC=96?= =?UTF-8?q?=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 48 ++++++++++++++++++++++++++++++++++---------- README.md | 18 +++++++++++------ README_en.md | 4 +++- docs/docker-build.md | 1 + 4 files changed, 53 insertions(+), 18 deletions(-) diff --git a/Dockerfile b/Dockerfile index b139cebc..03e281ee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,18 +1,44 @@ +# 第一阶段:构建依赖 +FROM python:3.10-slim as builder + +WORKDIR /app + +COPY requirements.txt . + +# 安装构建依赖 +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + gcc \ + libopus-dev \ + ffmpeg && \ + rm -rf /var/lib/apt/lists/* + +# 安装Python依赖到虚拟环境 +RUN python -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" +RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ + +# 第二阶段:生产镜像 FROM python:3.10-slim -RUN apt-get update \ - && apt-get upgrade -y \ - && apt-get install -y libopus-dev ffmpeg \ - && apt-get clean \ - && apt-get autoremove -y - -# Set working directory WORKDIR /opt/xiaozhi-es32-server -COPY . /opt/xiaozhi-es32-server +# 从构建阶段复制虚拟环境 +COPY --from=builder /opt/venv /opt/venv -# Clean unnecessary files to reduce image size -RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ +# 安装运行时依赖 +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + libopus0 \ + ffmpeg && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* -## Start the application +# 设置虚拟环境路径 +ENV PATH="/opt/venv/bin:$PATH" + +# 复制应用代码 +COPY . . + +# 启动应用 CMD ["python", "app.py"] \ No newline at end of file diff --git a/README.md b/README.md index 1316122e..307c76bf 100644 --- a/README.md +++ b/README.md @@ -58,21 +58,21 @@ 如果你的电脑是`arm`架构的电脑,请暂时使用`方式二:本地源码运行`。`arm`架构需要再等几天,因为目前还没有适配arm架构的镜像。 -1. 安装docker +### 1. 安装docker 如果您的电脑还没安装docker,可以按照这里的教程安装:[docker安装](https://www.runoob.com/docker/ubuntu-docker-install.html) -2. 创建目录 +### 2. 创建目录 安装完后,你需要为这个项目找一个安放配置文件的目录,我们暂且称它为`项目目录`,这个目录最好是一个新建的空的目录。 -3. 下载配置文件 +### 3. 下载配置文件 用浏览器打开[这个链接](https://github.com/xinnan-tech/xiaozhi-esp32-server/blob/main/config.yaml)。 在页面的右侧找到名称为`RAW`按钮,在`RAW`按钮的旁边,找到下载的图标,点击下载按钮,下载`config.yaml`文件。 把文件下载到你的`项目目录`。 -4. 修改配置文件 +### 4. 修改配置文件 修改刚才你下载的`config.yaml`文件,配置本项目所需的各种参数。默认的LLM使用的是`ChatGLMLLM`,你需要配置密钥,才能启动。 @@ -104,7 +104,7 @@ LLM: 有些服务,比如如果你使用`Dify`、`豆包的TTS`,是需要密钥的,记得在配置文件加上哦! -5. 执行docker命令 +### 5. 执行docker命令 打开命令行工具,`cd` 进入到你的`项目目录`,执行以下命令 @@ -144,13 +144,17 @@ docker logs -f xiaozhi-esp32-server 正常来说,假设你的ip是`192.168.1.25`,那么你的接口地址就是:`ws://192.168.1.25:8000`。这个信息很有用的,后面`编译esp32固件`需要用到。 后期如果想升级版本,可以这么操作 + 1、备份好`config.yaml`文件,一些关键的配置到时复制到新的`config.yaml`文件里。 + 2、执行以下命令 + ``` docker stop xiaozhi-esp32-server docker rm xiaozhi-esp32-server docker rmi ccr.ccs.tencentyun.com/xinnan/xiaozhi-esp32-server:latest ``` + 3.按本教程重新来一遍 @@ -343,4 +347,6 @@ VAD: # 鸣谢 -- 本项目受[百聆语音对话机器人](https://github.com/wwbin2017/bailing)项目启发,基于该项目的基础思路完成实现。 \ No newline at end of file +- 本项目受[百聆语音对话机器人](https://github.com/wwbin2017/bailing)项目启发,基于该项目的基础思路完成实现。 +- 感谢[腾讯云](https://cloud.tencent.com/)为本次项目提供免费docker镜像空间。 +- 感谢[十方融海](https://www.tenclass.com/)在小智通讯协议上提供充分的文档支持。 \ No newline at end of file diff --git a/README_en.md b/README_en.md index 54b75e9d..8c64bfb7 100644 --- a/README_en.md +++ b/README_en.md @@ -371,4 +371,6 @@ VAD: # Acknowledgments - This project is inspired by the [Bailin Voice Dialogue Robot](https://github.com/wwbin2017/bailing) project, and the - basic idea of the project is completed. \ No newline at end of file + basic idea of the project is completed。 +- Thanks to [Tencent Cloud] (https://cloud.tencent.com/) for providing free docker space for this project。 +- Thanks to [tenclass](https://www.tenclass.com/)Provide adequate documentation support on Xiaozhi Communication Protocol。 diff --git a/docs/docker-build.md b/docs/docker-build.md index 412ac846..cb20d353 100644 --- a/docs/docker-build.md +++ b/docs/docker-build.md @@ -13,6 +13,7 @@ docker build -t xiaozhi-esp32-server:local -f ./Dockerfile . docker stop xiaozhi-esp32-server docker rm xiaozhi-esp32-server +cd /Users/hrz/myworkspace/docker-java-env/thirddata/ cp /Users/hrz/myworkspace/esp32/xiaozhi-esp32-server/config.yaml ./ docker run -d --name xiaozhi-esp32-server --restart always -p 8000:8000 -v $(pwd)/config.yaml:/opt/xiaozhi-es32-server/config.yaml xiaozhi-esp32-server:local