1. 手动部署若依前后端分离版本

1)若依项目介绍

96dacf64b631ab4f6ed4f4e773eaa357_720.jpg

项目参考:
	https://gitee.com/y_project/RuoYi

若依可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。

若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。

RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、通知公告、代码生成等。在线定时任务配置,支持集群,支持多数据源,支持分布式事务等。

参考链接:
	https://doc.ruoyi.vip/ruoyi-vue/

2)安装MySQL并初始化表结构

1.克隆代码
[root@elk91 projects]# git clone https://gitee.com/y_project/RuoYi-Vue.git
Cloning into 'RuoYi-Vue'...
remote: Enumerating objects: 21151, done.
remote: Counting objects: 100% (743/743), done.
remote: Compressing objects: 100% (615/615), done.
remote: Total 21151 (delta 318), reused 51 (delta 15), pack-reused 20408 (from 1)
Receiving objects: 100% (21151/21151), 4.60 MiB | 3.55 MiB/s, done.
Resolving deltas: 100% (10763/10763), done.



2.部署MySQL
[root@elk91 ~]# docker container run \
  -e MYSQL_ALLOW_EMPTY_PASSWORD="yes" \
  -d \
  --name mysql-server \
  -e MYSQL_DATABASE="ry-vue" \
  -e MYSQL_USER="linux102" \
  -e MYSQL_PASSWORD="oldboyedu" \
  --network host \
  mysql:8.0.36-oracle \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci \
  --default-authentication-plugin=mysql_native_password
	
[root@elk91 projects]# docker ps -l
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS     NAMES
a81583c640b2   mysql:8.0.36-oracle   "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds             mysql-server

[root@elk91 projects]# ss -ntl | grep 3306
LISTEN 0      70                 *:33060            *:*          
LISTEN 0      151                *:3306             *:*          

	
3.导入SQL语句
[root@elk91 projects]# find RuoYi-Vue/ -name *.sql
RuoYi-Vue/sql/quartz.sql
RuoYi-Vue/sql/ry_20260320.sql

[root@elk91 projects]# ll RuoYi-Vue/sql/
total 80
drwxr-xr-x  2 root root  4096 Mar 26 09:07 ./
drwxr-xr-x 14 root root  4096 Mar 26 09:07 ../
-rw-r--r--  1 root root 11985 Mar 26 09:07 quartz.sql
-rw-r--r--  1 root root 61374 Mar 26 09:07 ry_20260320.sql
 
[root@elk91 projects]# docker cp RuoYi-Vue/sql mysql-server:/

[root@elk91 projects]# docker exec -it mysql-server bash
bash-4.4# cat > /etc/my.cnf <<EOF
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
character_set_client=utf8mb4
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci

[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
default-character-set=utf8mb4
EOF

bash-4.4# mysql
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8mb4                        |
| character_set_connection | utf8mb4                        |
| character_set_database   | utf8mb4                        |
| character_set_filesystem | binary                         |
| character_set_results    | utf8mb4                        |
| character_set_server     | utf8mb4                        |
| character_set_system     | utf8mb3                        |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)

bash-4.4# ls /sql/
quartz.sql  ry_20260320.sql

bash-4.4# mysql ry-vue < /sql/quartz.sql
bash-4.4# mysql ry-vue < /sql/ry_20260320.sql 

bash-4.4# mysql ry-vue
mysql> SHOW TABLES;
+--------------------------+
| Tables_in_ry-vue         |
+--------------------------+
| QRTZ_BLOB_TRIGGERS       |
| QRTZ_CALENDARS           |
| QRTZ_CRON_TRIGGERS       |
| QRTZ_FIRED_TRIGGERS      |
| QRTZ_JOB_DETAILS         |
| QRTZ_LOCKS               |
| QRTZ_PAUSED_TRIGGER_GRPS |
| QRTZ_SCHEDULER_STATE     |
| QRTZ_SIMPLE_TRIGGERS     |
| QRTZ_SIMPROP_TRIGGERS    |
| QRTZ_TRIGGERS            |
| gen_table                |
| gen_table_column         |
| sys_config               |
| sys_dept                 |
| sys_dict_data            |
| sys_dict_type            |
| sys_job                  |
| sys_job_log              |
| sys_logininfor           |
| sys_menu                 |
| sys_notice               |
| sys_notice_read          |
| sys_oper_log             |
| sys_post                 |
| sys_role                 |
| sys_role_dept            |
| sys_role_menu            |
| sys_user                 |
| sys_user_post            |
| sys_user_role            |
+--------------------------+
31 rows in set (0.00 sec)

3)maven打包若依

1.修改配置文件指定数据库信息
[root@elk91 projects]# vim RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml 
...
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: 数据库地址
                username: 数据库账号
                password: 数据库密码
                
                
2.部署maven
wget https://dlcdn.apache.org/maven/maven-3/3.9.14/binaries/apache-maven-3.9.14-bin.tar.gz

SVIP:
[root@elk91 projects]# wget http://192.168.14.253/Resources/Docker/Projects/RuoYi/apache-maven-3.9.14-bin.tar.gz


[root@elk91 projects]# tar xf apache-maven-3.9.14-bin.tar.gz  -C /usr/local/
 
[root@elk91 projects]# cat /etc/profile.d/maven.sh
#!/bin/bash

export MAVEN_HOME=/usr/local/apache-maven-3.9.14
export PATH=$PATH:$MAVEN_HOME/bin


[root@elk91 projects]# source /etc/profile.d/maven.sh
 
[root@elk91 projects]# mvn -v
Apache Maven 3.9.14 (996c630dbc656c76214ce58821dcc58be960875b)
Maven home: /usr/local/apache-maven-3.9.14
Java version: 22.0.2, vendor: Oracle Corporation, runtime: /usr/share/elasticsearch/jdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-173-generic", arch: "amd64", family: "unix"


3.打包编译
[root@elk91 projects]# cd RuoYi-Vue/

[root@elk91 RuoYi-Vue]# mvn clean package -Dmaven.test.skip=true
...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for ruoyi 3.9.2:
[INFO] 
[INFO] ruoyi .............................................. SUCCESS [  0.621 s]
[INFO] ruoyi-common ....................................... SUCCESS [ 22.057 s]
[INFO] ruoyi-system ....................................... SUCCESS [  0.585 s]
[INFO] ruoyi-framework .................................... SUCCESS [  4.145 s]
[INFO] ruoyi-quartz ....................................... SUCCESS [  0.625 s]
[INFO] ruoyi-generator .................................... SUCCESS [  0.504 s]
[INFO] ruoyi-admin ........................................ SUCCESS [  3.855 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  35.056 s
[INFO] Finished at: 2026-03-26T09:29:57+08:00
[INFO] ------------------------------------------------------------------------

[root@elk91 RuoYi-Vue]# ll ruoyi-admin/target/
total 87656
drwxr-xr-x 6 root root     4096 Mar 26 09:29 ./
drwxr-xr-x 4 root root     4096 Mar 26 09:29 ../
drwxr-xr-x 6 root root     4096 Mar 26 09:29 classes/
drwxr-xr-x 3 root root     4096 Mar 26 09:29 generated-sources/
drwxr-xr-x 2 root root     4096 Mar 26 09:29 maven-archiver/
drwxr-xr-x 3 root root     4096 Mar 26 09:29 maven-status/
-rw-r--r-- 1 root root 89657665 Mar 26 09:29 ruoyi-admin.jar
-rw-r--r-- 1 root root    65748 Mar 26 09:29 ruoyi-admin.jar.original

4)部署Redis服务

1.部署redis
[root@elk91 projects]# docker container run -d \
	--name redis-server \
	--network host \
	redis:7.2.8-alpine3.21
	
	
2.查看redis的监听端口
[root@elk91 projects]# docker ps -l
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS     NAMES
b7711cd69de5   redis:7.2.8-alpine3.21   "docker-entrypoint.s…"   4 seconds ago   Up 4 seconds             redis-server

[root@elk91 projects]# ss -ntl | grep 6379
LISTEN 0      511          0.0.0.0:6379       0.0.0.0:*          
LISTEN 0      511             [::]:6379          [::]:*

5)运行若依后台服务

1.配置JDK环境
[root@elk91 RuoYi-Vue]# cat /etc/profile.d/tomcat.sh 
#!/bin/bash

#export JAVA_HOME=/usr/share/elasticsearch/jdk
#export TOMCAT_HOME=/usr/local/apache-tomcat-11.0.13
#export PATH=$PATH:$JAVA_HOME/bin:$TOMCAT_HOME/bin


[root@elk91 RuoYi-Vue]# java --version
openjdk 22.0.2 2024-07-16
OpenJDK Runtime Environment (build 22.0.2+9-70)
OpenJDK 64-Bit Server VM (build 22.0.2+9-70, mixed mode, sharing)


2.启动若依服务
[root@elk91 RuoYi-Vue]# java -jar ruoyi-admin/target/ruoyi-admin.jar 
...
(♥◠‿◠)ノ゙  若依启动成功(´ڡ`)゙  
 .-------.       ____     __        
 |  _ _   \      \   \   /  /    
 | ( ' )  |       \  _. /  '       
 |(_ o _) /        _( )_ .'         
 | (_,_).' __  ___(_ o _)'          
 |  |\ \  |  ||   |(_,_)'         
 |  | \ `'   /|   `-'  /           
 |  |  \    /  \      /           
 ''-'   `'-'    `-..-'

6)部署前台服务

image-20260326095940609

1.下载nodejs
wget https://nodejs.org/dist/v24.14.1/node-v24.14.1-linux-x64.tar.xz

SVIP:
[root@elk91 projects]# wget http://192.168.14.253/Resources/Docker/Projects/RuoYi/node-v24.14.1-linux-x64.tar.xz


2.安装nodejs
[root@elk91 projects]# tar xf node-v24.14.1-linux-x64.tar.xz  -C /usr/local/
[root@elk91 projects]# cat /etc/profile.d/nodejs.sh
#!/bin/bash

export NODEJS_HOME=/usr/local/node-v24.14.1-linux-x64
export PATH=$PATH:$NODEJS_HOME/bin


[root@elk91 projects]# source /etc/profile.d/nodejs.sh

[root@elk91 projects]# node -v
v24.14.1

[root@elk91 projects]# npm -v
11.11.0


3.安装依赖并运行服务
[root@elk91 projects]# cd RuoYi-Vue/ruoyi-ui/

[root@elk91 ruoyi-ui]# npm install --registry=https://registry.npmmirror.com

[root@elk91 ruoyi-ui]# echo $?
0


4.运行项目
[root@elk91 ruoyi-ui]# npm run dev
...
 DONE  Compiled successfully in 20479ms                                                                                      9:45:29 AM


  App running at:
  - Local:   http://localhost:80/ 
  - Network: http://10.0.0.91:80/

  Note that the development build is not optimized.
  To create a production build, run npm run build.


5.访问webUI:http://10.0.0.91:80/

2. 若依项目容器化

63b7fb403542fdcde448eec2a991bab8_720

1)后端容器化

ca03956f595859b943db6a86364e0942

1.修改MySQL的配置文件
[root@elk91 RuoYi-Vue]# vim ruoyi-admin/src/main/resources/application-druid.yml 
...
# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://mysql-server:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: linux102
                password: oldboyedu


2.修改redis的配置文件
[root@elk91 RuoYi-Vue]# vim  ruoyi-admin/src/main/resources/application.yml 
...
# Spring配置
spring:
  ...
  data:
    # redis 配置
    redis:
      # 地址
      host: redis-server
      # 端口,默认为6379
      port: 6379
      # 数据库索引
      database: 0
  
3.清理环境
[root@elk91 RuoYi-Vue]# mvn clean


4.打包生成jar包文件
[root@elk91 RuoYi-Vue]# mvn clean package -Dmaven.test.skip=true
[root@elk91 RuoYi-Vue]# ll ruoyi-admin/target/
total 87652
drwxr-xr-x 6 root root     4096 Mar 26 11:54 ./
drwxr-xr-x 4 root root     4096 Mar 26 11:54 ../
drwxr-xr-x 6 root root     4096 Mar 26 11:54 classes/
drwxr-xr-x 3 root root     4096 Mar 26 11:54 generated-sources/
drwxr-xr-x 2 root root     4096 Mar 26 11:54 maven-archiver/
drwxr-xr-x 3 root root     4096 Mar 26 11:54 maven-status/
-rw-r--r-- 1 root root 89657672 Mar 26 11:54 ruoyi-admin.jar
-rw-r--r-- 1 root root    65755 Mar 26 11:54 ruoyi-admin.jar.original


5.编写Dockerfile
[root@elk91 RuoYi-Vue]# cp -r /usr/share/elasticsearch/jdk/  .

[root@elk91 RuoYi-Vue]# cat  Dockerfile 
FROM registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/tomcat:9.0.87-jdk17

MAINTAINER JasonYin

LABEL school=oldboyedu \
	class=linux102

COPY ruoyi-admin/target/ruoyi-admin.jar /

EXPOSE 8080

CMD ["java" ,"-jar", "/ruoyi-admin.jar" ]


[root@elk91 RuoYi-Vue]# docker build -t ruoyi-backend:v0.1 .


6.启动服务
[root@elk91 RuoYi-Vue]# grep server /etc/hosts
127.0.0.1 localhost  mysql-server  redis-server

[root@elk91 RuoYi-Vue]# docker run -d --name ruoyi-server  --network host ruoyi-backend:v0.1 

[root@elk91 RuoYi-Vue]# docker ps -l
CONTAINER ID   IMAGE        COMMAND                  CREATED              STATUS          PORTS     NAMES
02b9811bf520   ruoyi-backend:v0.1   "/jdk/bin/java -jar …"   About a minute ago   Up 15 seconds             ruoyi-server
[root@elk91 RuoYi-Vue]# 


7.查看日志
[root@elk91 RuoYi-Vue]# docker logs ruoyi-server 
...
 .-------.       ____     __        
 |  _ _   \      \   \   /  /    
 | ( ' )  |       \  _. /  '       
 |(_ o _) /        _( )_ .'         
 | (_,_).' __  ___(_ o _)'          
 |  |\ \  |  ||   |(_,_)'         
 |  | \ `'   /|   `-'  /           
 |  |  \    /  \      /           
 ''-'   `'-'    `-..-'              
[root@elk91 RuoYi-Vue]# ss -ntl | grep 8080
LISTEN 0      1000               *:8080             *:*          

2)前端容器化

1.打包前端代码
[root@elk91 ruoyi-ui]# npm run build:prod
[root@elk91 ruoyi-ui]# ll dist/
total 56
drwxr-xr-x 5 root root  40	96 Mar 26 16:14 ./
drwxr-xr-x 8 root root  4096 Mar 26 16:14 ../
-rw-r--r-- 1 root root  5663 Mar 26 16:14 favicon.ico
drwxr-xr-x 2 root root  4096 Mar 26 16:14 html/
-rw-r--r-- 1 root root 12759 Mar 26 16:14 index.html
-rw-r--r-- 1 root root  4206 Mar 26 16:14 index.html.gz
-rw-r--r-- 1 root root    26 Mar 26 16:14 robots.txt
drwxr-xr-x 6 root root  4096 Mar 26 16:14 static/
drwxr-xr-x 3 root root  4096 Mar 26 16:14 styles/



2.编写nginx的配置文件
[root@elk91 ruoyi-ui]# cat nginx.conf
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
		charset utf-8;

		location / {
            root   /usr/share/nginx/html;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			# proxy_pass http://localhost:8080/;
			proxy_pass http://ruoyi-server:8080/;			
		}

		# springdoc proxy
		location ~ ^/v3/api-docs/(.*) {
			# proxy_pass http://localhost:8080/v3/api-docs/$1;
			proxy_pass http://ruoyi-server:8080/v3/api-docs/$1;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}


3.编写Dockerfile
[root@elk91 ruoyi-ui]# cat Dockerfile 
FROM registry.cn-hangzhou.aliyuncs.com/yinzhengjie-k8s/apps:v1

MAINTAINER JasonYin

LABEL school=oldboyedu \
      class=linux102

EXPOSE 80

RUN rm -rf /usr/share/nginx/html/*

WORKDIR /usr/share/nginx/html/

COPY dist/ /usr/share/nginx/html

COPY nginx.conf /etc/nginx/nginx.conf


4.编译
[root@elk91 ruoyi-ui]# docker build -t ruoyi-frontend:v0.1  .


5.启动容器
[root@elk91 ruoyi-ui]# docker run -d --name ruoyi-ui --network host ruoyi-frontend:v0.1 
e7fc33ed5b819b577e64d59404c218ae7c1cfea2d6eb9b83a12814b8393d886c
 
[root@elk91 ruoyi-ui]# docker ps -l
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS        PORTS     NAMES
e7fc33ed5b81   ruoyi-frontend:v0.1   "docker-entrypoint.s…"   2 seconds ago   Up 1 second             ruoyi-ui

[root@elk91 ruoyi-ui]# ss -ntl | grep 80
LISTEN 0      511          0.0.0.0:80         0.0.0.0:*          
LISTEN 0      1000               *:8080             *:*          

[root@elk91 ruoyi-ui]# docker exec -it ruoyi-ui ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 nginx: master process nginx -g daemon off;
   31 nginx     0:00 nginx: worker process
   32 root      0:00 ps -ef



6.访问webUI:http://10.0.0.91/

3)docker-compose一键启动若依服务

使用docker-compose一键启动若依服务,并将相关的镜像推送到harbor仓库

1.编辑my.cnf
[root@elk92:~]# cat my.cnf 
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci

[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
default-character-set=utf8mb4


2.编辑docker-compose文件
[root@elk92:~]# cat docker-compose.yaml 
services:
  mysql-server:
    image: mysql:8.0.36-oracle
    container_name: mysql-server
    healthcheck:
      test: ["CMD", "mysqladmin", "ping"]
      interval: 10s
      timeout: 10s
      retries: 3
      start_period: 30s
      start_interval: 3s
    ports:
      - "3306:3306"
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      MYSQL_DATABASE: "ry-vue"
      MYSQL_USER: "linux102"
      MYSQL_PASSWORD: "oldboyedu"
    command: ["--character-set-server=utf8", "--collation-server=utf8_bin", "--default-authentication-plugin=mysql_native_password"]
    networks:    
    - ruoyi
    volumes:
    - /oldboyedu/projects/RuoYi-Vue/sql/:/docker-entrypoint-initdb.d
    - /oldboyedu/projects/my.cnf:/etc/my.cnf:ro

  redis-server:
    image: redis:7.2.8-alpine3.21
    container_name: redis-server
    healthcheck:
      test: ["CMD", "redis-benchmark", "-h","127.0.0.1","-p", "6379","-n", "1", "-c","2"]
      interval: 10s
      timeout: 10s
      retries: 3
      start_period: 30s
      start_interval: 3s
    ports:
    - "6379:6379"
    networks:    
    - ruoyi


  ruoyi-server:
    image: ruoyi-backend:v0.1
    container_name: ruoyi-server
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 5s
      start_interval: 1s
    depends_on:
      mysql-server:
        condition: service_healthy
      redis-server:
        condition: service_healthy
    ports:
    - "8080:8080"
    networks:    
    - ruoyi


  ruoyi-ui:
    image: ruoyi-frontend:v0.1
    depends_on:
      - ruoyi-server
    container_name: ruoyi-ui
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 5s
      start_interval: 1s
    ports:
    - "80:80"
    networks:    
    - ruoyi

networks:
  ruoyi:
    name: mysql-net
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: 172.28.0.0/16
          ip_range: 172.28.100.0/24
          gateway: 172.28.100.254

若依的搭建

作者

凛山辞

发布日期

2026 - 03 - 29

许可证

Unlicensed

Avatar
Scencng Lv

Ad Astra Per Aspera