从零开始:使用Docker-Compose一键部署若依微服务框架(含自定义模块配置)

从零开始:使用Docker-Compose一键部署若依微服务框架(含自定义模块配置) 从零开始使用Docker-Compose高效部署若依微服务框架全指南1. 环境准备与基础配置在开始部署若依微服务框架之前确保你的服务器满足以下基本要求操作系统推荐使用CentOS 7.x或Ubuntu 20.04 LTS硬件配置至少2核CPU、4GB内存生产环境建议4核8GB以上网络环境稳定的互联网连接能够访问Docker Hub和Maven仓库首先安装必要的依赖# 更新系统包 sudo yum update -y # CentOS/RHEL sudo apt update sudo apt upgrade -y # Ubuntu/Debian # 安装JDK 11 sudo yum install -y java-11-openjdk-devel # CentOS/RHEL sudo apt install -y openjdk-11-jdk # Ubuntu/Debian接下来安装Docker和Docker Compose# 安装Docker curl -fsSL https://get.docker.com | sh sudo systemctl enable --now docker # 安装Docker Compose sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose提示国内用户可以使用阿里云镜像加速Docker下载在/etc/docker/daemon.json中添加镜像配置。2. 获取若依微服务框架若依框架提供了完整的微服务解决方案包含权限管理、代码生成等核心功能模块。我们可以通过以下方式获取最新版本# 克隆官方仓库推荐使用稳定分支 git clone -b v4.7.2 https://gitee.com/y_project/RuoYi-Cloud.git cd RuoYi-Cloud # 或者下载特定版本 wget https://gitee.com/y_project/RuoYi-Cloud/repository/archive/v4.7.2.zip unzip v4.7.2.zip项目结构主要包含以下关键目录目录说明ruoyi-auth认证中心服务ruoyi-gatewayAPI网关服务ruoyi-modules业务模块目录ruoyi-visual监控相关服务dockerDocker部署配置文件3. 数据库与中间件配置若依微服务框架依赖以下核心组件MySQL存储业务数据Redis缓存和会话管理Nacos服务注册与配置中心修改docker-compose.yml中的数据库配置services: ruoyi-mysql: image: mysql:5.7 container_name: ruoyi-mysql environment: MYSQL_ROOT_PASSWORD: RuoYi123 MYSQL_DATABASE: ry-cloud volumes: - ./mysql/data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d ports: - 3306:3306Nacos配置需要特别注意服务发现地址ruoyi-nacos: image: nacos/nacos-server:2.0.3 container_name: ruoyi-nacos environment: MODE: standalone SPRING_DATASOURCE_PLATFORM: mysql MYSQL_SERVICE_HOST: ruoyi-mysql MYSQL_SERVICE_DB_NAME: ry-config MYSQL_SERVICE_USER: root MYSQL_SERVICE_PASSWORD: RuoYi123 ports: - 8848:8848 depends_on: - ruoyi-mysql注意所有服务的bootstrap.yml中Nacos地址必须使用服务名ruoyi-nacos而非localhost或127.0.0.1否则无法正确注册服务。4. 构建与部署流程完整的部署流程分为以下几个步骤项目打包# 在项目根目录执行 mvn clean package -DskipTests准备Docker镜像# 复制构建好的JAR文件到docker目录 sh bin/copy.sh # 构建基础服务 docker-compose build启动基础服务# 启动MySQL、Redis、Nacos等基础设施 docker-compose up -d ruoyi-mysql ruoyi-redis ruoyi-nacos # 等待30秒确保服务完全启动 sleep 30初始化数据库# 执行SQL初始化脚本 docker exec -i ruoyi-mysql mysql -u root -pRuoYi123 ry-cloud sql/ry-cloud.sql docker exec -i ruoyi-mysql mysql -u root -pRuoYi123 ry-config sql/ry-config.sql启动应用服务# 启动所有微服务 docker-compose up -d ruoyi-gateway ruoyi-auth ruoyi-modules-system5. 自定义业务模块集成若依框架的强大之处在于可以方便地添加自定义业务模块。以下是添加新模块的标准流程创建新模块在ruoyi-modules目录下复制现有模块如system作为模板重命名文件夹和内部配置如ruoyi-modules-business修改DockerfileFROM openjdk:11-jre MAINTAINER your-name VOLUME /home/ruoyi RUN mkdir -p /home/ruoyi WORKDIR /home/ruoyi COPY ./jar/ruoyi-modules-business.jar /home/ruoyi/ ENTRYPOINT [java,-jar,ruoyi-modules-business.jar]更新部署脚本在copy.sh中添加新模块的复制命令echo Copying business module... cp ../ruoyi-modules/ruoyi-business/target/ruoyi-modules-business.jar ./ruoyi/modules/business/jar在deploy.sh的modules()函数中添加新模块modules(){ docker-compose up -d ruoyi-nginx ruoyi-gateway ruoyi-auth \ ruoyi-modules-system ruoyi-modules-business }配置docker-compose.ymlruoyi-modules-business: container_name: ruoyi-modules-business build: context: ./ruoyi/modules/business dockerfile: Dockerfile ports: - 9300:9300 env_file: - ./env/ruoyi-service.env depends_on: - ruoyi-redis - ruoyi-mysql - ruoyi-nacos6. 常见问题排查部署过程中可能会遇到以下典型问题服务无法注册到Nacos检查bootstrap.yml中的Nacos地址是否为服务名ruoyi-nacos:8848确认Nacos控制台(http://your-server-ip:8848/nacos)可访问查看服务日志docker logs ruoyi-auth数据库连接失败确认MySQL容器已正常运行docker ps检查连接字符串中的主机名、端口和密码测试数据库连接docker exec -it ruoyi-mysql mysql -u root -p端口冲突使用netstat -tulnp查看已占用端口修改docker-compose.yml中的端口映射内存不足调整JVM参数ENTRYPOINT [java,-Xms512m,-Xmx1024m,-jar,ruoyi-modules-system.jar]增加服务器内存或限制容器资源7. 生产环境优化建议对于正式环境部署建议考虑以下优化措施资源限制ruoyi-gateway: deploy: resources: limits: cpus: 1 memory: 1G日志管理配置ELK或Fluentd收集容器日志添加日志轮转策略监控告警集成Prometheus Grafana监控配置关键指标告警高可用部署使用Nacos集群替代单机模式配置MySQL主从复制部署多个网关实例实现负载均衡安全加固修改所有默认密码配置TLS加密通信限制不必要的端口暴露# 示例生成自签名证书 openssl req -newkey rsa:2048 -nodes -keyout ruoyi.key -x509 -days 365 -out ruoyi.crt8. 持续集成与自动化部署为了实现更高效的开发运维流程可以配置CI/CD流水线GitLab CI示例stages: - build - deploy build: stage: build script: - mvn clean package -DskipTests artifacts: paths: - ruoyi-modules/*/target/*.jar deploy: stage: deploy script: - scp -r docker userproduction-server:/opt/ruoyi - ssh userproduction-server cd /opt/ruoyi docker-compose up -d --buildJenkins Pipelinepipeline { agent any stages { stage(Build) { steps { sh mvn clean package -DskipTests } } stage(Deploy) { steps { sh sh bin/copy.sh sshPublisher( publishers: [ sshPublisherDesc( configName: production-server, transfers: [ sshTransfer( sourceFiles: docker/**, remoteDirectory: /opt/ruoyi ) ], execCommand: cd /opt/ruoyi docker-compose up -d --build ) ] ) } } } }健康检查与自动恢复healthcheck: test: [CMD, curl, -f, http://localhost:8080/actuator/health] interval: 30s timeout: 10s retries: 3通过以上完整的部署指南开发者可以快速搭建若依微服务框架的生产环境并根据业务需求灵活扩展自定义模块。在实际项目中建议根据团队的技术栈和运维习惯选择合适的部署策略和优化方案。