使用Docker Compose编排vLLM-v0.17.1与MySQL数据库服务1. 引言在AI应用开发中我们经常需要将大模型服务与数据库系统结合起来使用。今天我要分享的是如何用Docker Compose快速搭建一个包含vLLM推理服务和MySQL数据库的完整环境。这种方法特别适合需要将模型能力与业务数据结合的场景比如个性化推荐系统、智能客服等。通过本教程你将学会如何编写一个完整的docker-compose.yml文件如何配置vLLM服务与MySQL的交互如何实现服务的一键启动和统一管理整个过程只需要10分钟左右跟着步骤走就能完成部署。即使你是Docker新手也不用担心我会用最直白的语言解释每个配置项的作用。2. 环境准备2.1 系统要求在开始之前请确保你的系统满足以下条件已安装Docker版本20.10.0或更高已安装Docker Compose版本1.29.0或更高至少16GB内存vLLM运行需要较多内存50GB可用磁盘空间用于存储模型和数据库2.2 快速检查环境打开终端运行以下命令检查环境是否就绪docker --version docker-compose --version如果两个命令都能正确输出版本号说明环境已经准备好。3. 编写docker-compose.yml文件3.1 创建项目目录首先创建一个项目目录所有文件都将放在这里mkdir vllm-mysql-stack cd vllm-mysql-stack3.2 编写核心配置文件创建一个名为docker-compose.yml的文件内容如下version: 3.8 services: vllm: image: vllm/vllm-openai:v0.17.1 container_name: vllm_service ports: - 8000:8000 volumes: - ./models:/models environment: - MODEL/models/vicuna-7b-v1.5 - HOST0.0.0.0 - PORT8000 deploy: resources: reservations: devices: - driver: nvidia count: 1 capabilities: [gpu] depends_on: - mysql networks: - app_network mysql: image: mysql:8.0 container_name: mysql_db ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql - ./mysql/init.sql:/docker-entrypoint-initdb.d/init.sql environment: - MYSQL_ROOT_PASSWORDyour_secure_password - MYSQL_DATABASEvllm_app - MYSQL_USERapp_user - MYSQL_PASSWORDapp_password networks: - app_network volumes: mysql_data: networks: app_network: driver: bridge3.3 配置文件详解让我们分解这个配置文件的关键部分vLLM服务配置使用官方vLLM镜像v0.17.1版本将8000端口映射到主机挂载models目录用于存放模型文件配置环境变量指定模型路径和服务端口声明需要GPU资源MySQL服务配置使用MySQL 8.0官方镜像将3306端口映射到主机使用数据卷持久化存储数据库初始化数据库用户和密码挂载初始化SQL脚本网络配置创建专用网络app_network两个服务都加入同一网络可以直接通过服务名互相访问4. 准备初始化文件4.1 创建模型目录mkdir models将你的模型文件如vicuna-7b-v1.5放入models目录。如果没有现成模型vLLM会自动下载。4.2 创建数据库初始化脚本创建mysql目录和初始化脚本mkdir mysql touch mysql/init.sql编辑init.sql文件添加你需要的表结构和初始数据。例如CREATE TABLE IF NOT EXISTS model_requests ( id INT AUTO_INCREMENT PRIMARY KEY, prompt TEXT NOT NULL, response TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );5. 启动服务5.1 一键启动所有服务在项目目录下运行docker-compose up -d这个命令会拉取所需的镜像如果本地没有创建网络和卷按依赖顺序启动服务先启动MySQL再启动vLLM5.2 查看服务状态要查看服务是否正常运行docker-compose ps你应该看到两个服务的状态都是up。5.3 查看服务日志要查看实时日志docker-compose logs -f按CtrlC退出日志查看。6. 验证服务6.1 验证vLLM服务vLLM服务提供了OpenAI兼容的API。你可以用curl测试curl http://localhost:8000/v1/models应该会返回类似这样的响应{ object: list, data: [ { id: vicuna-7b-v1.5, object: model, created: 1686935002, owned_by: vllm } ] }6.2 验证MySQL服务可以使用MySQL客户端连接数据库mysql -h 127.0.0.1 -P 3306 -u app_user -p输入密码app_password后你应该能成功连接到数据库。7. 使用技巧7.1 服务间通信在vLLM容器中你可以直接使用mysql作为主机名访问MySQL服务因为它们在同一个Docker网络中。7.2 持久化存储MySQL数据会保存在名为mysql_data的Docker卷中即使容器重启数据也不会丢失。7.3 资源监控要查看服务资源使用情况docker stats7.4 停止和清理停止服务docker-compose down要完全清理包括数据卷docker-compose down -v8. 总结通过这个教程我们成功搭建了一个包含vLLM推理服务和MySQL数据库的完整环境。这种组合特别适合需要将大模型能力与结构化数据结合的应用场景比如存储用户与模型的交互历史记录模型推理结果用于后续分析构建基于用户数据的个性化模型服务实际使用中你可能需要根据具体需求调整配置比如更换模型、增加数据库表等。这个基础架构已经为你提供了一个很好的起点可以在此基础上继续开发更复杂的功能。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。