目錄
整體架構概覽
創建 Docker 自定義網絡
Redis 部署(緩存服務)
redis.conf修改
啟動 Redis 容器
測試
啟動 MySQL 容器
允許 root 用戶遠程訪問(%)
初始化數據庫(可選)
RuoYi-Admin 后端服務部署服務
使用mvn或idea打包
使用Dockerfile自定義鏡像
訪問后臺
Nginx 部署(Web 服務器 & 反向代理)
啟動 Nginx 容器
上傳解壓
訪問前臺
前端部署
修改vue.config.js配置
安裝依賴
打包
整體架構概覽
模塊 技術/角色 說明
網絡 Docker Network 自定義網絡 net-ry,用于容器間通信
緩存 Redis 通過 Docker 運行,供后端緩存使用
數據庫 MySQL 5.7 通過 Docker 運行,數據持久化,供后端連接
后端服務 RuoYi-Admin (Java) 基于 Spring Boot,連接 MySQL 和 Redis
前端項目 Vue (RuoYi-Vue) 前端 Vue 項目,打包后由 Nginx 托管
Web 服務器 Nginx 托管前端靜態資源,反向代理后端 API
創建 Docker 自定義網絡
docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1
作用??:讓 redis、mysql、ruoyi-admin、nginx等容器處于同一網絡下,可以通過 ??容器名互相訪問??,而無需關心宿主機的 IP 或端口映射。
提示??:--subnet和 --gateway是可選的,但建議設置,便于管理。如果不設置,Docker 會自動分配。
--subnet
指定Docker 自定義網絡的 IP 段,如 172.68.0.0/16
--gateway
指定該網絡的網關地址,通常是子網的第一個 IP,如 172.68.0.1
Redis 部署(緩存服務)
#創建目錄 mkdir -p /data/redis/{conf,data} #上傳redis.conf
文件到/data/redis/conf文件夾中
-
/data/redis/conf/redis.conf
:Redis 配置文件,需自定義 -
/data/redis/data
:Redis 數據持久化目錄 -
redis.conf官方配置文件
redis.conf修改
-
允許redis外地連接
#bind 127.0.0.1改成為 bind 0.0.0.0
-
開啟redis驗證(可選)
requirepass sasa
-
開啟redis數據持久化(可選)
appendonly yes
啟動 Redis 容器
docker run -itd --name zking-redis -p 6379:6379 \ -v /data/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /data/redis/data:/data \ --privileged=true --restart=always \ --network net-ry redis \ redis-server /etc/redis/redis.conf
測試
# 進入 Redis 容器命令行 $ docker exec -it zking-redis bash # 使用 redis-cli 連接 Redis $ redis-cli # 默認連接到 127.0.0.1:6379,如果配置了密碼,需要先認證: $ 127.0.0.1:6379> ping # 如果設置了密碼,會返回 (error) NOAUTH Authentication required.** # 先進行認證: $ 127.0.0.1:6379> auth sasa OK # 再次測試 $ 127.0.0.1:6379> ping PONG 表示 Redis 運行正常,且密碼認證成功。 客戶端連接
## MySQL 部署(數據庫服務)
#創建文件夾 mkdir -p /data/mysql/{conf,data} #上傳my.cnf
文件到/data/mysql/conf文件夾中
-
/data/mysql/conf/my.cnf
:可選,如需自定義 MySQL 配置(字符集、時區等 -
/data/mysql/data
:數據持久化目錄 -
修改官方my.cnf 讓其支持中文
啟動 MySQL 容器
docker run -d --name zking-mysql --network net-ry \ -v /data/mysql/conf/my.cnf:/etc/my.cnf \ -v /data/mysql/data:/var/lib/mysql \ --privileged=true --restart=always \ -e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \ mysql/mysql-server:5.7
MYSQL_ROOT_PASSWORD=sasa
:設置 root 密碼
容器名 zking-mysql
,后端可通過該名稱訪問
默認字符集可能不支持中文,如需支持 utf8mb4,需在 my.cnf
中配置
允許 root 用戶遠程訪問(%)
# 進入容器 docker exec -it zking-mysql /bin/bash # 登錄mysql mysql -u root -p Enter password: sasa # 創建允許所有IP訪問的root賬戶(或修改現有) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'sasa' WITH GRANT OPTION; # 刷新權限 FLUSH PRIVILEGES;
初始化數據庫(可選)
注:數據庫 ry 創建x'z
url: jdbc:mysql://zking-mysql:3306/ry? username: root password: sasa
① 使用客戶端navicat.exe 導入SQL文件
② SQL文件rz到 /data/mysql/data,進入容器登錄mysql >source /var/lib/mysql/ sql 文件 名稱;
RuoYi-Admin 后端服務部署服務
使用mvn或idea打包
-
修改application-druid.yml配置了mysql
-
url: jdbc:mysql://zking-mysql:3306/ry
-
zking-mysql是容器名
-
-
-
修改application.yml
-
redis:# 地址host: zking-redis #是容器名# 端口,默認為6379port: 6379# 數據庫索引database: 0# 密碼password: sasa # 如果設置了密碼
-
-
修改logback.xml日志文件位置,application.xml文件上傳位置
-
選擇ruoyi中的package打包
使用Dockerfile自定義鏡像
# 安裝jdk 8 docker pull docker.1ms.run/adoptopenjdk/openjdk8# 上傳ruoyi-admin.jar mkdir ruoyi-admin ruoyi-admin/ ├── Dockerfile <-- Docker 構建腳本 └── ruoyi-admin.jar <-- 您用 Maven 打包出來的 Spring Boot 可運行 Jar 包# vi Dockerfile 如下: FROM docker.1ms.run/adoptopenjdk/openjdk8 MAINTAINER "donkee@vip.qq.com" ADD ruoyi-admin.jar /opt/app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/opt/app.jar"] # 自定義鏡像 docker build -t ruoyi-admin . # 運行容器 docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080 ruoyi-admin
訪問后臺
$ systemctl status firewalld $ systemctl stop firewalld[root@localhost ~]# curl http://192.168.58.128:8080 歡迎使用RuoYi后臺管理框架,當前版本:v3.8.5,請通過前端地址訪問。
Nginx 部署(Web 服務器 & 反向代理)
#創建目錄 mkdir -p /data/nginx/{conf,html} #上傳nginx.conf
至/data/nginx/conf文件夾中
-
/data/nginx/conf/nginx.conf
:Nginx 主配置,可配置代理與靜態資源 -
/data/nginx/html
:存放前端打包后的靜態文件(dist) -
nginx.conf 去 ry-vue前后端分離官網
啟動 Nginx 容器
docker run -itd --name zking-nginx --network net-ry -p 80:80 \ -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /data/nginx/html:/usr/share/nginx/html \ --privileged=true --restart=always \ nginx
前端打包的 dist
文件夾內容,需上傳到 /data/nginx/html
上傳解壓
#改變當前目錄 cd /data/nginx/html #安裝unzip工具 yum install -y unzip #上傳 rz #解壓 unzip dist.zip
訪問前臺
瀏覽器 http://192.168.58.128:80
前端部署
修改vue.config.js配置
devServer: {host: '0.0.0.0',port: port,open: true,proxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {//修改ruoyi-admin后臺地址target: `http://ruoyi-admin:8080`,changeOrigin: true,pathRewrite: {['^' + process.env.VUE_APP_BASE_API]: ''}}},disableHostCheck: true},
安裝依賴
# 安裝依賴 npm install # 本地開發 啟動項目 npm run dev
打包
# 打包正式環境 npm run build:prod # 打包預發布環境 npm run build:stage