pig-mesh/pig的Docker容器化部署实战指南
概述
pig-mesh/pig是基于Spring Cloud 2025、Spring Boot 3.5、OAuth2的RBAC(Role-Based Access Control,基于角色的访问控制)企业级快速开发平台。本文将详细介绍如何通过Docker容器化方式部署整个pig微服务系统,涵盖从环境准备到完整部署的全流程。
系统架构概览
pig系统采用微服务架构,主要包含以下核心组件:
环境要求
在开始部署前,请确保满足以下环境要求:
| 组件 | 版本要求 | 说明 |
|---|---|---|
| Docker | 20.10+ | 容器运行时环境 |
| Docker Compose | 2.0+ | 容器编排工具 |
| 系统内存 | ≥4GB | 推荐8GB以上 |
| 磁盘空间 | ≥2GB | 用于存储镜像和数据 |
Docker Compose配置详解
pig项目提供了完整的docker-compose.yml文件,用于一键部署所有服务:
version: '3.8'
services:
# MySQL数据库服务
pig-mysql:
build: ./db
environment:
MYSQL_ROOT_HOST: "%"
MYSQL_ROOT_PASSWORD: root
ports:
- "33306:3306"
networks:
- spring_cloud_default
# Redis缓存服务
pig-redis:
image: registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/redis
ports:
- "36379:6379"
networks:
- spring_cloud_default
# Nacos注册中心
pig-register:
build: ./pig-register
ports:
- "8848:8848"
- "9848:9848"
- "8080:8080"
environment:
MYSQL_HOST: pig-mysql
REDIS_HOST: pig-redis
networks:
- spring_cloud_default
# API网关服务
pig-gateway:
build: ./pig-gateway
ports:
- "9999:9999"
environment:
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
# 认证授权服务
pig-auth:
build: ./pig-auth
environment:
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
# 用户权限管理服务
pig-upms:
build: ./pig-upms/pig-upms-biz
environment:
MYSQL_HOST: pig-mysql
REDIS_HOST: pig-redis
NACOS_HOST: pig-register
networks:
- spring_cloud_default
networks:
spring_cloud_default:
driver: bridge
各服务Dockerfile解析
1. 网关服务Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:21-anolis
WORKDIR /pig-gateway
ARG JAR_FILE=target/pig-gateway.jar
COPY ${JAR_FILE} app.jar
EXPOSE 9999
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
CMD sleep 60; java $JAVA_OPTS -jar app.jar
关键配置说明:
- 使用Java 21基础镜像
- 设置时区为Asia/Shanghai
- JVM内存配置:初始128MB,最大256MB
- 启动前等待60秒确保依赖服务就绪
2. 数据库服务Dockerfile
FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/mysql-server:8.0.32
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY ./pig.sql /docker-entrypoint-initdb.d
COPY ./pig_config.sql /docker-entrypoint-initdb.d
EXPOSE 3306
初始化脚本:
- pig.sql:核心业务表结构
- pig_config.sql:系统配置数据
部署步骤详解
步骤1:克隆项目代码
git clone https://gitcode.com/pig-mesh/pig.git
cd pig
步骤2:构建项目JAR包
# 使用Maven编译项目
mvn clean package -DskipTests
步骤3:启动Docker容器
# 使用Docker Compose一键启动所有服务
docker-compose up -d
# 查看服务启动状态
docker-compose ps
# 查看实时日志
docker-compose logs -f
步骤4:验证服务状态
# 检查Nacos注册中心
curl http://localhost:8848/nacos/
# 检查网关服务
curl http://localhost:9999/
# 查看各容器状态
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
服务启动顺序与依赖关系
微服务系统的启动需要遵循特定的依赖顺序:
环境变量配置说明
各微服务通过环境变量进行配置:
| 服务 | 环境变量 | 说明 | 默认值 |
|---|---|---|---|
| 所有Java服务 | JAVA_OPTS | JVM参数 | -Xms128m -Xmx256m |
| 所有Java服务 | TZ | 时区设置 | Asia/Shanghai |
| Nacos | MYSQL_HOST | MySQL主机 | pig-mysql |
| Nacos | REDIS_HOST | Redis主机 | pig-redis |
| 业务服务 | NACOS_HOST | Nacos主机 | pig-register |
常见问题与解决方案
问题1:容器启动超时
症状:服务启动失败,提示连接超时 解决方案:增加启动等待时间
# 在Dockerfile中增加等待时间
CMD sleep 120; java $JAVA_OPTS -jar app.jar
问题2:内存不足
症状:容器频繁重启,JVM内存溢出 解决方案:调整JVM内存参数
environment:
JAVA_OPTS: "-Xms256m -Xmx512m"
问题3:端口冲突
症状:端口已被占用,服务启动失败 解决方案:修改docker-compose中的端口映射
ports:
- "19999:9999" # 将外部端口改为19999
监控与维护
服务健康检查
# 检查所有容器状态
docker-compose ps
# 查看特定服务日志
docker-compose logs pig-gateway
# 进入容器内部调试
docker-compose exec pig-mysql mysql -uroot -proot
资源监控
# 查看容器资源使用情况
docker stats
# 查看系统资源使用
docker system df
最佳实践建议
-
生产环境部署
- 使用独立的Docker网络
- 配置资源限制(CPU、内存)
- 启用日志轮转
- 设置健康检查探针
-
性能优化
- 根据实际负载调整JVM参数
- 配置数据库连接池
- 启用Redis缓存优化
-
安全加固
- 修改默认密码
- 限制网络访问
- 定期更新基础镜像
总结
通过Docker容器化部署pig微服务系统,可以快速搭建一套完整的企业级权限管理系统。本文详细介绍了部署流程、配置说明和常见问题解决方案,帮助开发者快速上手和实践。
整个部署过程遵循基础设施→注册中心→业务服务的顺序,确保服务间的依赖关系正确建立。通过合理的环境变量配置和资源管理,可以保证系统稳定高效运行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



