Docker 镜像构建指南
本文档详细介绍小智客户端项目的 Docker 容器化架构和构建流程,帮助贡献者和开发者理解项目的容器化设计理念和参与开发。📋 目录
🏗️ 项目 Docker 架构概览
设计理念
小智客户端采用双环境 Docker 架构,针对不同的使用场景提供了专门的解决方案:- 生产环境:基于预发布包,提供开箱即用的稳定体验
- 开发环境:支持本地构建,便于调试和功能开发
目录结构
项目将 Docker 相关文件组织在独立的docker/ 目录中:
架构特点
📦 构建文件详解
关键差异
| 特性 | 生产环境 | 开发环境 |
|---|---|---|
| 基础包 | xiaozhi-client 预发布包 | 本地源码构建 |
| 用户权限 | root 用户运行 | 非 root 用户(后续会保持一致) |
| Python 环境 | 完整虚拟环境 | 无 Python 环境(后续会保持一致) |
| 启动方式 | 直接运行可执行文件 | 通过源码运行 |
| 调试支持 | 基础日志 | 完整开发工具链 |
⚙️ 核心机制解析
容器启动流程
entrypoint.sh 脚本实现了智能的容器初始化流程:
版本管理
update-version.js 脚本实现了版本号的自动同步:
🚀 开发工作流
本地开发环境
- 构建开发镜像:
- 启动开发容器:
- 调试和开发:
生产环境部署
- 构建生产镜像:
- 使用 Docker Compose:
版本发布流程
- 更新版本号:
- 自动化构建:
.github/workflows/docker-publish.yml
调试技巧
- 查看详细日志:
- 进入容器调试:
- 网络连接测试:
📚 参考资料
💡 参与贡献
欢迎参与小智客户端的 Docker 相关开发!请参考以下资源:- 提交 Issue:在 GitHub 上报告 Bug 或提出功能建议
- 提交 PR:贡献代码改进和文档更新
- 讨论交流:参与技术讨论和方案设计
- 遵循现有的文件组织结构
- 添加适当的注释和文档
- 测试在不同环境下的兼容性
- 保持与现有 CI/CD 流程的一致性