使用Docker Compose一键部署SenseVoice-Small及其依赖服务想快速搭建一个能说会道的语音合成服务但又觉得配置各种依赖、连接数据库和缓存太麻烦今天咱们就来聊聊怎么用Docker Compose像搭积木一样把包含SenseVoice-Small模型、Redis和MySQL的整套服务一次性部署起来。整个过程简单到只需要几条命令让你告别繁琐的环境配置真正实现开箱即用。1. 学习目标与前置准备通过这篇教程你将学会如何用一个文件启动包含语音合成模型、数据存储和缓存服务的完整应用栈。无论你是想快速体验SenseVoice-Small的能力还是为后续的应用开发准备一个稳定的后端环境这个方法都能帮你省下大量时间。你需要准备的东西很简单一台安装了Linux或macOS的电脑Windows用户可以通过WSL2获得类似的体验。已经安装好的Docker和Docker Compose。如果你还没装可以去Docker官网找对应系统的安装指南步骤很清晰。一个文本编辑器用来编写我们的核心配置文件。不用担心整个过程不需要你手动安装Python环境、配置模型权重或者折腾数据库连接Docker会帮你搞定一切。2. 理解我们的部署蓝图在动手写代码之前我们先花两分钟看看我们要搭建的东西到底是什么。你可以把它想象成一个微型的“语音工厂”它由三个关键车间组成语音合成车间 (SenseVoice-Small服务)这是核心负责接收文本然后合成出听起来很自然的语音。我们会把它封装在一个Docker容器里运行。临时储物间 (Redis服务)合成任务的一些中间状态、或者需要快速访问的配置信息会放在这里。它的特点是速度快适合做缓存。永久档案库 (MySQL服务)用户信息、合成任务的历史记录、或者生成的音频文件元数据这些需要持久化保存的数据就存在这里。而Docker Compose就像是这个工厂的总控开关和布线图。我们通过一个叫docker-compose.yml的配置文件告诉Docker“请按这个图纸把这三个车间容器建好并把它们之间的网络、数据通道都连接通。” 这样一来我们就不用分别启动三个服务再手动配置它们如何通信了。3. 编写核心的Docker Compose文件现在我们来创建这个“总控布线图”。在你电脑上找个合适的地方新建一个文件夹比如叫sensevoice-deploy。然后在这个文件夹里创建一个名为docker-compose.yml的文件。用你的文本编辑器打开它把下面的内容复制进去。我会在关键的地方加上注释帮你理解每一部分是做什么的。version: 3.8 services: # 1. SenseVoice-Small 语音合成服务 sensevoice-service: image: your-sensevoice-image:latest # 这里需要替换为你实际构建或拉取的镜像名 container_name: sensevoice-app restart: unless-stopped ports: - 8000:8000 # 将容器的8000端口映射到主机的8000端口用于API访问 environment: - REDIS_HOSTredis-cache - REDIS_PORT6379 - MYSQL_HOSTmysql-db - MYSQL_PORT3306 - MYSQL_DATABASEsensevoice_db - MYSQL_USERvoice_user - MYSQL_PASSWORDyour_secure_password_here # 请务必修改为强密码 depends_on: - redis-cache - mysql-db volumes: - ./model_weights:/app/models # 假设模型权重文件挂载到本地./model_weights目录 - ./generated_audio:/app/audio_output # 生成的音频文件输出到本地 networks: - voice-network # 2. Redis 缓存服务 redis-cache: image: redis:7-alpine container_name: voice-redis restart: unless-stopped ports: - 6379:6379 volumes: - redis_data:/data networks: - voice-network # 3. MySQL 数据库服务 mysql-db: image: mysql:8 container_name: voice-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: your_root_password_here # 请务必修改 MYSQL_DATABASE: sensevoice_db MYSQL_USER: voice_user MYSQL_PASSWORD: your_secure_password_here # 与sensevoice-service中的保持一致 ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql # 可选的初始化SQL脚本 networks: - voice-network # 定义数据卷用于持久化存储Redis和MySQL的数据 volumes: redis_data: mysql_data: # 定义自定义网络让三个服务在同一个内部网络内通信更安全便捷 networks: voice-network: driver: bridge重要提示镜像名称你需要将your-sensevoice-image:latest替换为实际的SenseVoice-Small Docker镜像。这可能是你从某个镜像仓库拉取的或者是你自己根据模型Dockerfile构建的。密码安全文件中的your_secure_password_here和your_root_password_here是示例务必在生产环境中修改为复杂且唯一的密码。模型权重示例中通过卷 (volumes) 将本地./model_weights目录挂载到容器的/app/models。你需要确保本地的./model_weights目录下存放了正确的SenseVoice-Small模型文件。初始化脚本./init.sql是一个可选功能。如果你需要在MySQL容器首次启动时自动创建特定的表结构可以准备这个SQL文件。4. 一键启动与验证配置文件写好之后剩下的就非常简单了。打开终端进入你存放docker-compose.yml文件的目录也就是sensevoice-deploy文件夹。4.1 启动所有服务只需一条命令Docker Compose就会根据配置文件拉取镜像如果本地没有、创建网络、数据卷并启动所有服务。docker-compose up -d那个-d参数是让服务在后台运行。执行后你会看到Docker在拉取镜像、启动容器。稍等片刻直到命令执行完成。4.2 检查服务状态启动完成后怎么知道一切是否正常呢用下面这个命令查看所有容器的运行状态docker-compose ps如果看到三个服务的状态都是Up那就恭喜你初步成功了类似下面这样Name Command State Ports ---------------------------------------------------------------------------------------- sensevoice-deploy_mysql-db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306-3306/tcp sensevoice-deploy_redis-cache_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379-6379/tcp sensevoice-deploy_sensevoice-service_1 python app.py Up 0.0.0.0:8000-8000/tcp4.3 验证服务可用性验证API服务SenseVoice-Small服务默认映射到了主机的8000端口。你可以用curl命令快速测试一下接口是否通畅。curl http://localhost:8000/health如果返回一个包含{status: ok}之类的JSON响应说明服务运行正常。验证数据库连接你可以进入MySQL容器内部检查数据库是否创建成功。docker exec -it voice-mysql mysql -uvoice_user -p输入你在docker-compose.yml里设置的密码然后执行SHOW DATABASES;应该能看到sensevoice_db这个数据库。查看服务日志如果遇到问题查看日志是首要的排查手段。可以查看所有服务的日志docker-compose logs或者只看某个服务的日志比如只看语音服务的docker-compose logs sensevoice-service5. 日常操作与管理技巧服务跑起来之后你还需要知道一些基本的操作命令停止所有服务docker-compose down。这会停止并移除所有容器但默认会保留你定义的数据卷redis_data和mysql_data所以你的数据不会丢失。停止服务但保留容器docker-compose stop。重新启动已停止的服务docker-compose start。重启某个特定服务比如修改了SenseVoice服务的配置后docker-compose restart sensevoice-service。查看实时日志docker-compose logs -f sensevoice-service-f参数可以持续滚动显示最新日志。彻底清理谨慎使用如果你想重新开始可以运行docker-compose down -v。注意这个命令会同时删除数据卷所有数据库和缓存里的数据都会丢失。一个实用小技巧如果你需要更新SenseVoice-Small的镜像版本可以先修改docker-compose.yml中的镜像标签然后运行docker-compose pull sensevoice-service拉取新镜像最后用docker-compose up -d sensevoice-service重新创建该容器。这样更新过程非常平滑。6. 总结走完整个流程你会发现用Docker Compose来部署这种多服务的应用确实非常省心。我们把模型服务、缓存、数据库的依赖关系、环境变量、网络配置全都写进了一个文件里部署和复现环境变得轻而易举。无论是自己开发测试还是和团队同事共享部署配置这个docker-compose.yml文件就是最好的说明书。当然这只是一个起点。在实际生产环境中你可能还需要考虑更多比如如何管理敏感信息可以用Docker secrets或者环境变量文件如何配置更复杂的网络策略或者如何结合容器编排平台。但无论如何今天掌握的这套方法已经能帮你应对绝大多数开发、测试和中小型应用场景的需求了。下次当你需要快速搭建一个包含复杂依赖的服务时不妨试试Docker Compose这个“一站式”解决方案。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
使用Docker Compose一键部署SenseVoice-Small及其依赖服务
使用Docker Compose一键部署SenseVoice-Small及其依赖服务想快速搭建一个能说会道的语音合成服务但又觉得配置各种依赖、连接数据库和缓存太麻烦今天咱们就来聊聊怎么用Docker Compose像搭积木一样把包含SenseVoice-Small模型、Redis和MySQL的整套服务一次性部署起来。整个过程简单到只需要几条命令让你告别繁琐的环境配置真正实现开箱即用。1. 学习目标与前置准备通过这篇教程你将学会如何用一个文件启动包含语音合成模型、数据存储和缓存服务的完整应用栈。无论你是想快速体验SenseVoice-Small的能力还是为后续的应用开发准备一个稳定的后端环境这个方法都能帮你省下大量时间。你需要准备的东西很简单一台安装了Linux或macOS的电脑Windows用户可以通过WSL2获得类似的体验。已经安装好的Docker和Docker Compose。如果你还没装可以去Docker官网找对应系统的安装指南步骤很清晰。一个文本编辑器用来编写我们的核心配置文件。不用担心整个过程不需要你手动安装Python环境、配置模型权重或者折腾数据库连接Docker会帮你搞定一切。2. 理解我们的部署蓝图在动手写代码之前我们先花两分钟看看我们要搭建的东西到底是什么。你可以把它想象成一个微型的“语音工厂”它由三个关键车间组成语音合成车间 (SenseVoice-Small服务)这是核心负责接收文本然后合成出听起来很自然的语音。我们会把它封装在一个Docker容器里运行。临时储物间 (Redis服务)合成任务的一些中间状态、或者需要快速访问的配置信息会放在这里。它的特点是速度快适合做缓存。永久档案库 (MySQL服务)用户信息、合成任务的历史记录、或者生成的音频文件元数据这些需要持久化保存的数据就存在这里。而Docker Compose就像是这个工厂的总控开关和布线图。我们通过一个叫docker-compose.yml的配置文件告诉Docker“请按这个图纸把这三个车间容器建好并把它们之间的网络、数据通道都连接通。” 这样一来我们就不用分别启动三个服务再手动配置它们如何通信了。3. 编写核心的Docker Compose文件现在我们来创建这个“总控布线图”。在你电脑上找个合适的地方新建一个文件夹比如叫sensevoice-deploy。然后在这个文件夹里创建一个名为docker-compose.yml的文件。用你的文本编辑器打开它把下面的内容复制进去。我会在关键的地方加上注释帮你理解每一部分是做什么的。version: 3.8 services: # 1. SenseVoice-Small 语音合成服务 sensevoice-service: image: your-sensevoice-image:latest # 这里需要替换为你实际构建或拉取的镜像名 container_name: sensevoice-app restart: unless-stopped ports: - 8000:8000 # 将容器的8000端口映射到主机的8000端口用于API访问 environment: - REDIS_HOSTredis-cache - REDIS_PORT6379 - MYSQL_HOSTmysql-db - MYSQL_PORT3306 - MYSQL_DATABASEsensevoice_db - MYSQL_USERvoice_user - MYSQL_PASSWORDyour_secure_password_here # 请务必修改为强密码 depends_on: - redis-cache - mysql-db volumes: - ./model_weights:/app/models # 假设模型权重文件挂载到本地./model_weights目录 - ./generated_audio:/app/audio_output # 生成的音频文件输出到本地 networks: - voice-network # 2. Redis 缓存服务 redis-cache: image: redis:7-alpine container_name: voice-redis restart: unless-stopped ports: - 6379:6379 volumes: - redis_data:/data networks: - voice-network # 3. MySQL 数据库服务 mysql-db: image: mysql:8 container_name: voice-mysql restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: your_root_password_here # 请务必修改 MYSQL_DATABASE: sensevoice_db MYSQL_USER: voice_user MYSQL_PASSWORD: your_secure_password_here # 与sensevoice-service中的保持一致 ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql # 可选的初始化SQL脚本 networks: - voice-network # 定义数据卷用于持久化存储Redis和MySQL的数据 volumes: redis_data: mysql_data: # 定义自定义网络让三个服务在同一个内部网络内通信更安全便捷 networks: voice-network: driver: bridge重要提示镜像名称你需要将your-sensevoice-image:latest替换为实际的SenseVoice-Small Docker镜像。这可能是你从某个镜像仓库拉取的或者是你自己根据模型Dockerfile构建的。密码安全文件中的your_secure_password_here和your_root_password_here是示例务必在生产环境中修改为复杂且唯一的密码。模型权重示例中通过卷 (volumes) 将本地./model_weights目录挂载到容器的/app/models。你需要确保本地的./model_weights目录下存放了正确的SenseVoice-Small模型文件。初始化脚本./init.sql是一个可选功能。如果你需要在MySQL容器首次启动时自动创建特定的表结构可以准备这个SQL文件。4. 一键启动与验证配置文件写好之后剩下的就非常简单了。打开终端进入你存放docker-compose.yml文件的目录也就是sensevoice-deploy文件夹。4.1 启动所有服务只需一条命令Docker Compose就会根据配置文件拉取镜像如果本地没有、创建网络、数据卷并启动所有服务。docker-compose up -d那个-d参数是让服务在后台运行。执行后你会看到Docker在拉取镜像、启动容器。稍等片刻直到命令执行完成。4.2 检查服务状态启动完成后怎么知道一切是否正常呢用下面这个命令查看所有容器的运行状态docker-compose ps如果看到三个服务的状态都是Up那就恭喜你初步成功了类似下面这样Name Command State Ports ---------------------------------------------------------------------------------------- sensevoice-deploy_mysql-db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306-3306/tcp sensevoice-deploy_redis-cache_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379-6379/tcp sensevoice-deploy_sensevoice-service_1 python app.py Up 0.0.0.0:8000-8000/tcp4.3 验证服务可用性验证API服务SenseVoice-Small服务默认映射到了主机的8000端口。你可以用curl命令快速测试一下接口是否通畅。curl http://localhost:8000/health如果返回一个包含{status: ok}之类的JSON响应说明服务运行正常。验证数据库连接你可以进入MySQL容器内部检查数据库是否创建成功。docker exec -it voice-mysql mysql -uvoice_user -p输入你在docker-compose.yml里设置的密码然后执行SHOW DATABASES;应该能看到sensevoice_db这个数据库。查看服务日志如果遇到问题查看日志是首要的排查手段。可以查看所有服务的日志docker-compose logs或者只看某个服务的日志比如只看语音服务的docker-compose logs sensevoice-service5. 日常操作与管理技巧服务跑起来之后你还需要知道一些基本的操作命令停止所有服务docker-compose down。这会停止并移除所有容器但默认会保留你定义的数据卷redis_data和mysql_data所以你的数据不会丢失。停止服务但保留容器docker-compose stop。重新启动已停止的服务docker-compose start。重启某个特定服务比如修改了SenseVoice服务的配置后docker-compose restart sensevoice-service。查看实时日志docker-compose logs -f sensevoice-service-f参数可以持续滚动显示最新日志。彻底清理谨慎使用如果你想重新开始可以运行docker-compose down -v。注意这个命令会同时删除数据卷所有数据库和缓存里的数据都会丢失。一个实用小技巧如果你需要更新SenseVoice-Small的镜像版本可以先修改docker-compose.yml中的镜像标签然后运行docker-compose pull sensevoice-service拉取新镜像最后用docker-compose up -d sensevoice-service重新创建该容器。这样更新过程非常平滑。6. 总结走完整个流程你会发现用Docker Compose来部署这种多服务的应用确实非常省心。我们把模型服务、缓存、数据库的依赖关系、环境变量、网络配置全都写进了一个文件里部署和复现环境变得轻而易举。无论是自己开发测试还是和团队同事共享部署配置这个docker-compose.yml文件就是最好的说明书。当然这只是一个起点。在实际生产环境中你可能还需要考虑更多比如如何管理敏感信息可以用Docker secrets或者环境变量文件如何配置更复杂的网络策略或者如何结合容器编排平台。但无论如何今天掌握的这套方法已经能帮你应对绝大多数开发、测试和中小型应用场景的需求了。下次当你需要快速搭建一个包含复杂依赖的服务时不妨试试Docker Compose这个“一站式”解决方案。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。