vue3-springboot-mysql的docker部署
Docker配置原理与部署文档
概述
本文档详细说明RuoYi-Vue与BladeX集成项目的Docker部署原理,包括配置文件的作用、相互关系及数据流动。通过三个核心配置文件(docker-compose.yml、Dockerfile和docker-entrypoint.sh),实现了应用的容器化部署和灵活配置。
配置文件职责
1. docker-compose.yml
主要职责: 定义完整的应用栈,编排多容器服务
- 指定服务组件:应用程序(ruoyi-app)、数据库(mysql)、缓存(redis)
- 配置镜像构建参数,传递给Dockerfile
- 设置容器运行环境变量
- 定义端口映射、卷挂载和服务依赖
- 支持从.env文件或环境变量加载参数值
2. Dockerfile
主要职责: 定义应用镜像的构建过程
- 采用多阶段构建策略,减小最终镜像体积
- 第一阶段(frontend-build):编译Vue前端应用
- 第二阶段(backend-build):编译Spring Boot后端应用
- 最终阶段:整合前后端资源,配置运行环境
- 接收构建参数(ARG),动态生成前端环境配置
- 设置容器启动入口点(docker-entrypoint.sh)
3. docker-entrypoint.sh
主要职责: 容器启动初始化和应用配置生成
- 处理环境变量,设置默认值
- 动态生成后端应用配置文件(application-docker.yml)
- 使用正确的配置启动Java应用
- 确保容器优雅启动和退出
数据流与执行顺序
构建阶段流程
- 执行
docker-compose up
命令启动部署 - Docker Compose解析docker-compose.yml配置
- 检查ruoyi-app镜像是否存在,不存在则构建
- 基于Dockerfile开始构建镜像:
- 前端构建:Node.js环境下编译Vue应用
- 后端构建:Maven环境下编译Spring Boot应用
- 整合资源:将编译结果合并到最终镜像
- 构建参数流动:
- docker-compose.yml的args部分 → Dockerfile的ARG变量
- ARG变量 → 前端环境配置文件(.env.production)
运行阶段流程
- 创建并启动数据库和Redis容器
- 创建并启动应用容器,传入环境变量
- 容器启动执行docker-entrypoint.sh脚本
- 脚本处理环境变量并生成配置文件
- 启动Java应用并加载生成的配置
- 环境变量流动:
- .env文件/环境变量 → docker-compose.yml的environment部分
- environment值 → 容器环境变量
- 容器环境变量 → docker-entrypoint.sh变量
- 脚本变量 → 生成的application-docker.yml
- 配置文件 → Spring应用配置
配置机制详解
环境变量替换语法
docker-compose.yml使用${VARIABLE:-default}
语法,实现灵活配置:
- 尝试读取名为VARIABLE的环境变量值
- 如环境变量不存在或为空,使用冒号后的默认值
- 例:
${DB_PASSWORD:-password}
,若未设置DB_PASSWORD则使用"password"
多阶段构建优化
Dockerfile采用多阶段构建,优化镜像大小和构建效率:
- 依赖安装与代码编译分离,利用Docker缓存机制
- 只复制必要的编译结果到最终镜像
- 使用轻量级基础镜像运行应用,减小体积
配置文件动态生成
entrypoint脚本通过Here Document语法生成配置:
cat > /app/config/application-docker.yml << EOF
spring:datasource:url: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}
EOF
- 将环境变量值插入模板中
- 支持复杂的多行配置生成
- 生成的配置文件由Spring Boot应用加载
部署配置说明
必要配置项
最小化配置需要设置以下环境变量:
- 数据库连接:DB_HOST, DB_PASSWORD
- 应用地址:API_URL, BLADE_REDIRECT_URI
- BladeX连接:BLADE_AUTH_URL, BLADE_CLIENT_ID, BLADE_CLIENT_SECRET
数据持久化
通过卷挂载实现数据持久化:
- 数据库数据:mysql-data卷
- Redis数据:redis-data卷
- 用户上传文件:./uploadPath目录
- 应用日志:./logs目录
部署步骤
- 准备环境:安装Docker和Docker Compose
- 创建配置:编写.env文件设置环境特定参数
- 构建镜像:运行
docker-compose build
- 启动服务:运行
docker-compose up -d
- 验证部署:访问应用地址确认服务可用
- 查看日志:运行
docker-compose logs
监控运行状态
常见问题与解决方案
-
数据库连接失败
- 检查DB_HOST和DB_PASSWORD配置
- 确认数据库容器健康状态
-
Redis连接问题
- 如不需密码,设置REDIS_PASSWORD为空值
- 检查Redis容器运行状态
-
BladeX认证失败
- 验证BladeX相关URL和凭据配置
- 确保BLADE_REDIRECT_URI能被公网访问
-
镜像构建失败
- 检查构建日志定位具体错误
- 确保网络连接良好能下载依赖
这套Docker配置实现了开发与运行环境分离,使同一套代码能在不同环境中无缝部署,只需通过环境变量调整具体参数,无需修改代码。