前言
今天来聊聊在日常开发中最常用的场景------使用Docker Compose在本地部署服务。经过多个项目的实践,我总结了一套高效的部署流程,特别适合团队协作和快速开发迭代。
AI智能体系统设计相关文章:
👉《04_AI智能体系统设计之工具调用人工干预机制深度解析》
AI智能体开发环境搭建相关文章:
👉《06_AI智能体开发环境搭建之Miniconda零基础安装配置指南》
👉《07_AI智能体开发环境搭建之Poetry安装适用指南,Python开发者告别依赖管理烦恼》
👉《08_AI智能体开发环境搭建之Conda与Poetry的完美整合创建虚拟环境》
👉《09_AI智能体开发环境搭建之Redis安装配置完整指南》
👉《10_AI智能体开发环境搭建之Qdrant向量搜索引擎安装配置全攻略》
👉《11_AI智能体开发环境搭建之VSCode安装配置与效率提升完整指南》
👉《12_AI智能体开发环境搭建之PyCharm社区版安装配置全攻略,打造高效的Python开发环境》
AI智能体开发架构搭建相关文章:
👉《13_AI智能体开发架构搭建之资深开发者的初始化项目实践》
👉《14_AI智能体开发架构搭建之资深开发者的项目依赖管理实践》
👉《15_AI智能体开发架构搭建之生产级架构全局配置管理最佳实践》
👉《17_AI智能体开发架构搭建之Flask集成swagger在线文档实践》
👉《18_AI智能体开发架构搭建之集成DeepSeek-V3与BGE-M3的最佳实践指南》
👉《19_AI智能体开发架构搭建之基于Qdrant构建知识库最佳实践指南》
👉《20_AI智能体开发架构搭建之构建高可用网络爬虫工具最佳实践指南》
更多相关文章内容: 👉《AI智能体从0到企业级项目落地》专栏
配套视频教程👉《AI智能体实战开发教程(从0到企业级项目落地)》共62节(已完结),从零开始,到企业级项目落地,这套课程将为你提供最完整的学习路径。不管你是初学者还是有一定经验的开发者,都能在这里获得实实在在的成长和提升。
一、安装 docker 和 docker compose
1.1 windows 安装 docker-desktop
1.2 docker 学习资料
二、本地开发环境部署
2.1 启动前的准备工作
首先确保Docker Desktop处于运行状态。很多新手容易忽略这一点,结果执行命令时各种报错。

2.2 部署过程
进入部署目录
bash
# 进入部署目录
cd docker

这个步骤看似简单,但经常有人搞错目录层级。记得我们的docker-compose.yml文件放在docker目录下,所以要先进入这个目录。
2.3 清理环境:避免缓存带来的坑
在重新构建之前,建议先清理环境:
bash
# 停止并删除容器、网络等资源
docker compose down
# 如果需要彻底清理数据(慎用!)
docker compose down -v
# 强制清理构建缓存
docker builder prune -af
这里有个重要提醒:docker compose down -v会删除所有卷数据,包括Redis和Qdrant的持久化数据。在开发环境可以偶尔使用,但如果你的测试数据很重要,建议不要加-v参数。
2.4 构建和启动服务
bash
# 启动服务
docker-compose up -d --build

这个命令有几个关键点:
-
-d参数让服务在后台运行,不影响当前终端
-
--build强制重新构建镜像,确保代码变更生效
-
如果只是重启服务而不需要重新构建,可以去掉--build
2.5 服务状态监控
启动完成后,需要确认各个服务的状态:
bash
# 查看服务状态
docker-compose ps

理想的输出应该是所有服务都显示"Up"状态。如果看到"Exit"或"Restarting",说明服务启动有问题。
2.6 日志查看:排错的关键
日志是排查问题的第一手资料:
bash
# 查看所有服务日志
docker-compose logs -f
# 查看特定服务日志
docker logs -f flyoss-assistant
docker logs -f flyoss-redis
docker logs -f flyoss-qdrant

在实际开发中,我习惯用-f参数实时跟踪日志,特别是在调试阶段。如果服务启动失败,第一时间查看日志能节省大量排查时间。
三、服务验证
3.1 API文档访问
服务启动成功后,可以通过API文档验证基础功能:
bash
http://localhost:8000/docs

如果能看到Swagger UI界面,说明主服务已经正常启动。如果无法访问,可能是端口被占用或者服务还在启动中。
3.2 健康状态检查
更直接的验证方式是健康检查接口:
bash
http://localhost:8000/monitoring/health

这个端点应该返回所有依赖服务的健康状态,包括Redis和Qdrant的连接情况。
四、实战经验分享
4.1 常见问题及解决方案
问题1:端口冲突
错误信息:Bind for 0.0.0.0:8000 failed: port is already allocated
解决方案:修改docker-compose.yml中的端口映射,或者停止占用端口的其他服务。
问题2:镜像构建失败
错误信息:build target not found
解决方案:检查Dockerfile路径是否正确,确保在正确的目录执行命令。
问题3:依赖服务连接超时
错误信息:Connection refused或Timeout
解决方案:检查depends_on配置,确保服务启动顺序正确。
4.2 开发效率技巧
分阶段构建: 在开发阶段可以注释掉多阶段构建,加快构建速度
日志级别调整: 开发时设置为DEBUG级别,便于调试
热重载配置: 可以配置volume映射,实现代码热更新
资源监控
在Docker Desktop的Dashboard中可以直观看到:
-
各个容器的CPU、内存使用情况
-
网络IO和磁盘IO
-
实时日志输出
这对于性能调优和资源规划很有帮助。
总结
本地Docker Compose部署是现代化开发流程中的重要一环。掌握这套流程不仅能提高个人开发效率,还能保证团队环境的一致性。
记住,好的部署流程应该是可靠且可重复的。每次部署都能得到相同的结果,这才是容器化部署的价值所在。
希望这套经过实战检验的部署流程能帮你少走弯路。