Pig-Mesh微服务架构的Docker Compose部署指南
2025-07-07 06:40:34作者:温玫谨Lighthearted
项目概述
Pig-Mesh是一个基于Spring Cloud的微服务架构项目,采用现代化的微服务设计模式构建。本文将通过分析项目的docker-compose.yml配置文件,深入解读其微服务架构设计和容器化部署方案。
核心服务组件
1. 基础设施层服务
MySQL数据库服务 (pig-mysql)
- 使用自定义构建的MySQL镜像
- 配置了root用户远程访问权限
- 端口映射:主机33306映射到容器3306
- 自动重启策略确保服务高可用
Redis缓存服务 (pig-redis)
- 使用阿里云镜像仓库提供的Redis镜像
- 端口映射:主机36379映射到容器6379
- 配置了专用主机名和自动重启
2. 服务注册与发现中心 (pig-register)
- 基于Nacos构建的服务注册中心
- 暴露三个关键端口:
- 8848:Nacos服务端口
- 9848:Nacos集群RPC端口
- 8080:管理控制台端口
- 依赖MySQL和Redis服务
3. 核心业务服务
API网关服务 (pig-gateway)
- 端口9999对外提供服务
- 依赖Redis和Nacos服务
- 作为系统统一的API入口
认证授权服务 (pig-auth)
- 提供OAuth2认证功能
- 依赖Redis缓存和Nacos服务发现
- 无端口映射,仅内部服务调用
用户权限管理系统 (pig-upms)
- 用户和权限管理核心服务
- 依赖MySQL、Redis和Nacos
- 构建于pig-upms-biz模块
4. 可视化监控与工具服务
监控服务 (pig-monitor)
- 端口5001提供监控界面
- 集成Nacos服务发现
- 提供系统运行状态监控
代码生成服务 (pig-codegen)
- 自动化代码生成工具
- 依赖MySQL、Redis和Nacos
- 提高开发效率
定时任务服务 (pig-quartz)
- 基于Quartz的分布式任务调度
- 依赖MySQL持久化任务状态
- 通过Redis实现分布式锁
网络配置
项目使用自定义的bridge网络spring_cloud_default
,所有服务都加入该网络,实现:
- 服务间通过容器名直接通信
- 隔离的网络安全环境
- 优化的内部DNS解析
部署特点分析
-
服务依赖关系:
- 所有业务服务都依赖注册中心(pig-register)
- 多数服务同时依赖MySQL和Redis
- 网关服务作为唯一外部入口
-
构建策略:
- 大部分服务使用本地Dockerfile构建
- Redis使用公共镜像加速部署
-
高可用设计:
- 所有服务配置了restart: always
- 关键服务配置了专用hostname
-
端口规划:
- 外部访问端口统一偏移(3xxxx)
- 内部服务使用标准端口
最佳实践建议
-
生产环境调整:
- 考虑增加资源限制(resources)
- 添加健康检查配置
- 实现配置分离(使用.env文件)
-
扩展性考虑:
- 可添加日志收集服务
- 考虑服务多实例部署
- 添加API文档服务
-
安全建议:
- 修改默认数据库密码
- 限制Redis外部访问
- 添加网络访问控制
总结
通过这份docker-compose.yml文件,我们可以清晰地看到Pig-Mesh项目的微服务架构全貌。它展示了一个典型的Spring Cloud应用在Docker环境下的部署方案,涵盖了从基础设施到业务服务的完整链条。这种容器化的部署方式不仅便于开发测试,也为生产环境的持续交付奠定了基础。