Docker compose ruoyi示例

若依(RuoYi)单体版Docker化部署需准备四类资源:前端dist打包产物、后端ruoyi-admin.jar、数据库初始化脚本(quartz.sql、ry_xxx.sql)、基础运行环境(npm、Java、MySQL、Redis);整体采用docker-compose编排,目录规划为/docker-compose,下设java(后端)、nginx(前端+代理)、mysql(数据库+初始化脚本)、redis(缓存)四个子目录,提前创建对应路径并赋予权限(如chmod 777 -R /docker-compose/mysql)。

一、部署前置准备

目录与权限初始化
复制代码

bash

bash

复制代码
mkdir -p /docker-compose/java/logs
mkdir -p /docker-compose/nginx/html
mkdir -p /docker-compose/mysql/logs
mkdir -p /docker-compose/redis/logs
chmod 777 -R /docker-compose/mysql
资源上传

将前端dist包、nginx.conf、后端ruoyi-admin.jar、数据库脚本(quartz.sql、ry_20250522.sql)分别上传至对应目录。


二、各服务配置与命令

1. MySQL数据库

初始化脚本init.sql内容:

复制代码

sql

sql

复制代码
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'root';
GRANT ALL PRIVILEGES ON `ry-vue`.* TO 'root'@'%';
FLUSH PRIVILEGES;

docker-compose.yml片段:

复制代码

yaml

yaml

复制代码
mysql:
  image: mysql:5.7
  container_name: mysql.server
  environment:
    - MYSQL_ROOT_PASSWORD=root
    - MYSQL_DATABASE=ry-vue
  command:
    --character-set-server=utf8mb4
    --collation-server=utf8mb4_general_ci
    --log-error=/var/log/mysql/error.log
  volumes:
    - /docker-compose/mysql/mysql-data4:/var/lib/mysql
    - /docker-compose/mysql:/docker-entrypoint-initdb.d
    - /docker-compose/mysql/logs:/var/log/mysql
2. 后端Java服务

Dockerfile内容:

复制代码

dockerfile

dockerfile

复制代码
FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum clean all && yum makecache
RUN yum -y install java-1.8.0
WORKDIR /opt
COPY ./ruoyi-admin.jar /opt
CMD ["java", "-jar", "ruoyi-admin.jar"]

自定义配置文件挂载(可选,覆盖jar包内配置):

复制代码
复制代码
cat > /docker-compose/java/application.yml << 'EOF'
server:
  port: 8080
spring:
  datasource:
    druid:
      url: jdbc:mysql://mysql:3306/ry-vue?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
      username: root
      password: root
  redis:
    host: redis
    port: 6379
    password:
EOF
3. Nginx前端服务

docker-compose.yml片段:

复制代码
复制代码
ruoyi-web:
  image: nginx:1.25.3
  container_name: ruoyi-web
  ports:
    - 8888:80
  volumes:
    - /docker-compose/nginx/html:/usr/share/nginx/html/
    - /docker-compose/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
    - /docker-compose/nginx/logs:/var/log/nginx
  depends_on:
    - java
4. Redis缓存服务

docker-compose.yml片段:

复制代码
redis:
  image: redis
  container_name: redis.server
  volumes:
    - /docker-compose/redis/logs:/var/log/redis

三、编排与调试命令

场景 命令
首次构建启动 cd /docker-compose && docker-compose up -d --build
停止并清理容器+数据卷 docker-compose down -v
重启单个服务 docker-compose restart java
查看后端实时日志 docker logs -f java
查看MySQL错误日志 tail -f /docker-compose/mysql/logs/error.log
单独启动指定服务 docker-compose up -d db java

四、常见故障处理经验

  • 出现502优先检查MySQL状态:docker ps | grep mysql,若退出则查看初始化脚本权限:chmod +x /docker-compose/mysql/import_data.sh;

  • 后端连库失败时,可进入MySQL容器验证:docker exec -it mysql.server mysql -uroot -proot,手动执行source /docker-entrypoint-initdb.d/ry_20250522.sql排查脚本语法。

相关推荐
闪亮的路灯5 小时前
Linux 安装mqtt服务mosquitto
linux·运维·服务器
szxinmai主板定制专家8 小时前
X86 工控机 vs RK3588 异构主控:AMR 控制器 BOM、散热、长期运维对比
运维·stm32·单片机·嵌入式硬件·fpga开发·am62x
叼烟扛炮8 小时前
Linux 学习笔记(四十一):TCP 并发演进——从单进程到多线程服务器
linux·运维·服务器·网络·笔记·学习·tcp/ip
Decay__9 小时前
09_MySQL 闪回与时间点恢复 —— binlog 回放、mysqlbinlog、PITR 与误删恢复
运维·数据库·sql·mysql·架构
久曲健的测试窝9 小时前
2026软件测试工具选型指南:双模式如何化解UI脚本维护难题
运维·人工智能·科技·aigc
DarkAthena9 小时前
wslc ps 卡死的排查:一次「停容器不停 VM」引发的连环故障
docker
NailiConveyor11 小时前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
小沈同学呀11 小时前
【Agent开发第十五期】部署上线:把 Alex 搬进浏览器,15 期全栈串联收官
docker·agent·从零搭建ai助手
Lsetea11 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
如若12311 小时前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透