安装Docker
# 安装必要工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加阿里云镜像
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 查看Docker版本信息
docker -v
# 启动 docker 服务
sudo systemctl start docker
# 停止 docker 服务
sudo systemctl stop docker
# 查看 docker 服务状态
sudo systemctl status docker
# 重启 docker 服务
sudo systemctl restart docker
# 设置开机自启
sudo systemctl enable docker
安装Docker Compose
# github连接不稳定,可能需要梯子
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 授权
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
准备项目文件
创建项目文件夹
sudo mkdir -p /opt/ruoyi/{mysql/data,mysql/init,redis/data,backend,frontend}
结构为:
/opt/ruoyi/
├── docker-compose.yml # Docker Compose主编排文件
├── mysql/
│ ├── data/ # 数据库数据持久化目录
│ └── init/ # 初始化SQL脚本目录
├── redis/
│ └── data/ # Redis数据持久化目录
├── backend/
│ ├── Dockerfile # 后端镜像构建文件
│ └── ruoyi-admin.jar # 后端JAR包(需上传)
└── frontend/├── Dockerfile # 前端镜像构建文件└── dist/ # 前端静态资源(需上传)
配置MySQL与Redis
将RuoYi项目中的数据库初始化SQL文件(ry_xxxxxx.sql和 quartz.sql)上传到 /opt/ruoyi/mysql/init/目录下。
配置后端服务SpringBoot
将本地打包好的 ruoyi-admin.jar文件上传到服务器的 /opt/ruoyi/backend/目录下。
创建后端的Dockerfile
在 /opt/ruoyi/backend/目录下创建 Dockerfile文件:
# 使用较小的JDK基础镜像,这里以OpenJDK 8为例
FROM openjdk:8-jre-slim# 设定时区
ENV TZ=Asia/Shanghai
# 安装字体库(若依验证码需要)
RUN apt-get update && apt-get install -y --no-install-recommends fontconfig libfreetype6 && rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 将jar包复制到容器内
COPY ruoyi-admin.jar app.jar# 暴露端口
EXPOSE 8080# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]
配置前端服务Vue
将前端打包生成的 dist文件夹 上传到服务器的 /opt/ruoyi/frontend/目录下。
再把之前准备好的 nginx.conf文件 也上传到 /opt/ruoyi/frontend/目录下。
创建前端的Dockerfile
在 /opt/ruoyi/frontend/目录下创建 Dockerfile文件:
FROM nginx:1.21-alpine# 将打包好的静态文件复制到Nginx的默认站点目录
COPY dist/ /usr/share/nginx/html/# 复制自定义的Nginx配置文件
COPY nginx.conf /etc/nginx/conf.d/default.conf
编写Docker Compose编排文件
在 /opt/ruoyi/目录下创建 docker-compose.yml文件
version: '3.8'services:ruoyi-mysql:image: mysql:8.0container_name: ruoyi-mysqlcommand: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_passwordenvironment:MYSQL_ROOT_PASSWORD: root@123 # 请修改为强密码MYSQL_DATABASE: ry-vue # 数据库名,需与RuoYi配置一致ports:- "3306:3306"volumes:- ./mysql/data:/var/lib/mysql # 数据持久化- ./mysql/init:/docker-entrypoint-initdb.d # 初始化SQLnetworks:- ruoyi-netruoyi-redis:image: redis:6.2-alpinecontainer_name: ruoyi-redisports:- "6379:6379"volumes:- ./redis/data:/datacommand: redis-server --requirepass redis@123 # 请修改为强密码,需与RuoYi配置一致networks:- ruoyi-netruoyi-backend:build: ./backend # 根据backend目录下的Dockerfile构建镜像container_name: ruoyi-backenddepends_on: # 明确依赖关系,先启动db和redis- ruoyi-mysql- ruoyi-redisenvironment:TZ: Asia/Shanghainetworks:- ruoyi-net# 不直接映射宿主机端口,通过Nginx反向代理访问,更安全ruoyi-frontend:build: ./frontend # 根据frontend目录下的Dockerfile构建镜像container_name: ruoyi-frontenddepends_on:- ruoyi-backendports:- "80:80" # 将前端Nginx服务暴露在80端口networks:- ruoyi-netnetworks:ruoyi-net: # 创建自定义网络,便于容器间通过服务名(如ruoyi-backend)通信
⚠注:这里配置的要与后端代码ruoyi-admin/src/main/resources/application.yml和application-druid.yml中的数据库名,账号,密码,端口等保持一致。
redis:host: ruoyi-redisport: 6379password: redis@123 # 与docker-compose.yml中redis的command密码一致
url: jdbc:mysql://ruoyi-mysql:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root@123 # 与docker-compose.yml中的MYSQL_ROOT_PASSWORD一致
构建并启动所有服务
cd /opt/ruoyi
# 构建镜像并启动所有容器(-d 表示后台运行)
docker-compose up -d --build
验证部署与排查
检查容器状态:
docker-compose ps
所有服务(mysql, redis, backend, frontend)的状态应为 "Up"。
查看日志:
docker logs ruoyi-backend # 查看后端日志
docker logs ruoyi-frontend # 查看前端Nginx日志
docker logs ruoyi-mysql # 查看数据库日志
访问
在浏览器中输入 http://你的服务器IP,应能访问到RuoYi-Vue的登录界面。默认用户名是 admin,密码是 admin123
⚠注:确保服务器防火墙已开放80、3306、6379等端口。