国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

若依微服務(wù)部署,裸服務(wù)部署、docker部署、k8s部署

這篇具有很好參考價(jià)值的文章主要介紹了若依微服務(wù)部署,裸服務(wù)部署、docker部署、k8s部署。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

環(huán)境:centos7、Win10
若依是一個(gè)合適新手部署練習(xí)的開源的微服務(wù)項(xiàng)目,本篇講解Windows部署若依微服務(wù)、docker部署若依微服務(wù)、k8s部署若依微服務(wù)等3種方式。
若依是一個(gè)基于SpringBoot2.0的權(quán)限管理系統(tǒng),同時(shí)使用到了mysql、redis、nacos等技術(shù),這里更好理解一下java程序是如何使用nacos的。

windows 部署若依-微服務(wù)版本

下載若依的源代碼:https://gitee.com/y_project/RuoYi-Cloud,克隆/下載,下載ZIP即可。下載后解壓到D:\ruoyi-cloud文件夾即可。
按照官網(wǎng),我們部署若依微服務(wù)版本:https://doc.ruoyi.vip/ruoyi-cloud/

#官網(wǎng)寫的部署環(huán)境要求,所以選擇的版本要滿足要求
JDK >= 1.8 (推薦1.8版本)
Mysql >= 5.7.0 (推薦5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 12
nacos >= 2.0.4 (ruoyi-cloud < 3.0 需要下載nacos >= 1.4.x版本)
sentinel >= 1.6.0
#windows安裝jdk1.8
下載地址:https://javadl.oracle.com/webapps/download/GetFile/1.8.0_301-b09/d3c52aa6bfa54d3ca74e617f18309292/windows-i586/jdk-8u301-windows-x64.exe
1. 打開環(huán)境變量配置。計(jì)算機(jī)→屬性→高級(jí)系統(tǒng)設(shè)置→高級(jí)→環(huán)境變量,在系統(tǒng)變量中配置。
2. 配置JAVA_HOME。新建,變量名JAVA_HOME,變量值=jdk路徑,我的路徑是C:\Program Files\Java\jdk1.8.0_301 ( 最后的路徑不要寫斜杠)保存。
3. 配置CLASSPATH。新建,變量名CLASSPATH,變量值等于.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(第一個(gè)分號(hào)前面有一個(gè)點(diǎn))。
4. 配置Path。選中Path變量,點(diǎn)編輯按鈕,在變量值最前加入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
5. 運(yùn)行cmd,輸入java -version,顯示java版本則成功。
#windows安裝 apache-maven-3.8.8 
下載Windows的zip包:https://dlcdn.apache.org/maven/maven-3/3.8.8/binaries/apache-maven-3.8.8-bin.zip
解壓即可。
配置環(huán)境變量,變量名和值對(duì)應(yīng)如下:
M2_HOME		D:\apache-maven-3.8.8\bin
MAVEN_HOME	D:\apache-maven-3.8.8
PATH	前面追加 %MAVEN_HOME%\bin;
#cmd驗(yàn)證是否正常
mvn -version
#Windows安裝安裝node和npm命令
#npm命令用于生成前端制品,即給前端生成dist目錄
https://nodejs.org/dist/v14.4.0/node-v14.4.0-win-x64.zip
解壓到 D:/node-v14.4.0-win-x64
#配置環(huán)境變量
NODE_HOME	D:\node-v14.4.0-win-x64
PATH		前面追加 %NODE_HOME%;
#cmd驗(yàn)證是否正常
npm -v
node -v
#這里為了方便,使用Linux部署mysql,當(dāng)然使用Windows安裝也是可以的,Windows安裝也很簡(jiǎn)單。
#linux部署mysql5.7
mkdir mysql
cd mysql/
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar
tar xf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar 
rpm -qa | grep mariadb
rpm -e --nodeps  mariadb-libs-5.5.68-1.el7.x86_64
ls /etc/my*
rpm -ivh mysql-community-common-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-compat-5.7.38-1.el7.x86_64.rpm
rpm -ivh mysql-community-embedded-devel-5.7.38-1.el7.x86_64.rpm
which mysqld
id mysql
#開始初始化mysql
mysqld --initialize --user=mysql
systemctl start mysqld
systemctl status  mysqld
systemctl enable  mysqld
grep "password" /var/log/mysqld.log
which mysql
mysql -uroot -p#%b9oE67kaj4
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Aa123456';	#修改mysql root賬號(hào)密碼,記住這個(gè)密碼
use mysql;
update user set host='%' where user='root';
FLUSH PRIVILEGES;
exit;
systemctl  restart mysqld

#mysql導(dǎo)入數(shù)據(jù),初始化庫(kù)和表
先執(zhí)行源碼包里的RuoYi-Cloud-master\sql目錄下的ry_config_20220929.sql文件,該文件里面有創(chuàng)建ry_config庫(kù)和表的語(yǔ)句;
windows使用Navicat Premium鏈接mysql數(shù)據(jù)庫(kù),選擇運(yùn)行SQL文件導(dǎo)入即可。
由于ry_20230706.sql文件沒有創(chuàng)建庫(kù)的語(yǔ)句,根據(jù)官網(wǎng)得知是要?jiǎng)?chuàng)建一個(gè)名稱叫做ry-cloud的庫(kù),所以參照ry_config_20220929.sql文件里面的建
庫(kù)語(yǔ)句,復(fù)制粘貼并添加到ry_20230706.sql文件開頭即可,注意修改庫(kù)名為ry-cloud:
DROP DATABASE IF EXISTS `ry-cloud`;
CREATE DATABASE  `ry-cloud` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE `ry-cloud`;

最后執(zhí)行ry_20230706.sql文件即可。
這樣兩個(gè)必要的ry-cloud庫(kù)和ry_config庫(kù)都準(zhǔn)備好了。
ry-cloud庫(kù)是若依系統(tǒng)使用的庫(kù),ry_config庫(kù)是nacos的庫(kù)。
quartz.sql也可以導(dǎo)入ry-cloud庫(kù)(可選)。
#這里為了方便,使用Linux部署redis,當(dāng)然使用Windows安裝也是可以的,Windows安裝也很簡(jiǎn)單。
#Linux安裝redis3.2
yum install redis -y
vim /etc/redis.conf	
bind 192.168.xx.150	#設(shè)置監(jiān)聽I(yíng)P為本機(jī)IP
systemctl  enable --now  redis
redis服務(wù)器啟動(dòng)成功之后,在Windows使用Redis Desktop Manager 鏈接成功即可。這里默認(rèn)redis沒有配置密碼。
#這里為了方便,使用Linux部署nacos,當(dāng)然使用Windows安裝也是可以的,Windows安裝也很簡(jiǎn)單。
#Linux部署nacos
nacos需要jdk環(huán)境,所以linux服務(wù)器也要安裝jdk。
#linux安裝jdk1.8
#去https://www.oracle.com/java/technologies/downloads/下載對(duì)應(yīng)版本的tar.gz包
tar -zxvf jdk1.8.tar.gz  -C /usr/local/
cd /usr/local/
mv jdk1.8.0_211  java
cat >> /etc/profile <<'EOF'
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile
java -version

#安裝nacos-2.2.1
#官網(wǎng)顯示nacos >= 2.0.4,所以選擇安裝nacos-2.2.1
#nacos-2.2.2版本及之后的版本對(duì)登錄驗(yàn)證有改變,需要自己配置,所以這里安裝nacos-2.2.1版本
mkdir nacos-server
wget -c https://github.com/alibaba/nacos/releases/download/2.2.1/nacos-server-2.2.1.tar.gz
tar xvf nacos-server-2.2.1.tar.gz
cd nacos 
vim conf/application.properties			#添加下面的鏈接mysql的語(yǔ)句,注意修改mysql的IP和root密碼
# db mysql
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.xx.150:3306/ry-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=Aa123456

#發(fā)現(xiàn)啟動(dòng)報(bào)錯(cuò),顯示登錄鑒權(quán)相關(guān)的報(bào)錯(cuò),官網(wǎng)說2.2.2之后才需要自己配置登錄信息,不知道2.2.1為什么也要配置,所以就配置:
#修改下面這個(gè)幾個(gè)參數(shù)的值
nacos.core.auth.enabled=true
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos
nacos.core.auth.plugin.nacos.token.secret.key=VkdocGMwbHpUWGxEZFhOMGIyMVRaV055WlhSTFpYa3dNVElocGMwbHpUWGxEZFhOMGIyMVRaV055WlhSTFpYa3dhZmR6TkRVMk56Zz0K

#單機(jī)模式啟動(dòng)nacos
cd bin/
./startup.sh  -m standalone
tail -222f /root/nacos-server/nacos/logs/start.out
#windows登錄nacos
http://192.168.xx.150:8848/nacos/#/login   賬號(hào)密碼:nacos/nacos
登錄之后,一定要編輯修改每一個(gè)yml文件里面的全部的redis和mysql的相關(guān)配置,比如redis的IP,端口密碼(這里我沒有配置redis的密碼),
mysql的IP端口root賬號(hào)密碼等信息,修改之后點(diǎn)擊發(fā)布即可。
#后端項(xiàng)目打包,即后端項(xiàng)目打jar包
將若依項(xiàng)目導(dǎo)入到Eclipse,打開Eclipse,菜單 File -> Import,然后選擇 Maven -> Existing Maven Projects,點(diǎn)擊 Next> 按鈕,選擇工作目錄,然后點(diǎn)擊 Finish 按鈕,即可成功導(dǎo)入。
Eclipse會(huì)自動(dòng)加載Maven依賴包,初次加載會(huì)比較慢(根據(jù)自身網(wǎng)絡(luò)情況而定)
注意修改全部的bootstrap.yml文件的redis地址,nacos地址等信息,bootstrap.yml文件基本在下面這樣的路徑:
./ruoyi-auth/src/main/resources/bootstrap.yml
./ruoyi-gateway/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
./ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
同時(shí)bootstrap.yml文件還要添加nacos的賬號(hào)密碼,如下:
.........
  profiles:
    # 環(huán)境配置
    active: dev		#這里保持默認(rèn)是dev環(huán)境
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊(cè)地址
        server-addr: 192.168.xx.150:8848
        username: nacos		#添加nacos的登錄賬號(hào)密碼
        password: nacos     #添加nacos的登錄賬號(hào)密碼  	
      config:
        # 配置中心地址
        server-addr: 192.168.xx.150:8848
        username: nacos		#添加nacos的登錄賬號(hào)密碼
        password: nacos     #添加nacos的登錄賬號(hào)密碼   	

#這里nacos沒有配置命名空間,默認(rèn)是public命名空間
#修改完bootstrap.yml文件后注意保存

在ruoyi項(xiàng)目的bin目錄下執(zhí)行package.bat打包Web工程,默認(rèn)是生成jar包可執(zhí)行文件。
打包完成之后會(huì)在對(duì)應(yīng)的子項(xiàng)目下target目錄下生成jar包。
clean.bat可以清除jar包,就是清除target目錄下的文件。
jar包全都打包成功之后,可以啟動(dòng)jar包了,點(diǎn)擊運(yùn)行run-auth.bat文件運(yùn)行啟動(dòng)auth即可,啟動(dòng)沒報(bào)錯(cuò)顯示啟動(dòng)正常即可,
由官網(wǎng)得知,只需啟動(dòng)下面這3個(gè)必須啟動(dòng)的模塊即可:
(啟動(dòng)沒有先后順序)
RuoYiGatewayApplication (網(wǎng)關(guān)模塊 必須)
RuoYiAuthApplication (認(rèn)證模塊 必須)
RuoYiSystemApplication (系統(tǒng)模塊 必須)
RuoYiMonitorApplication (監(jiān)控中心 可選)
RuoYiGenApplication (代碼生成 可選)
RuoYiJobApplication (定時(shí)任務(wù) 可選)
RuoYFileApplication (文件服務(wù) 可選)

#最后,auth、Gateway、System均啟動(dòng)正常。
#前端項(xiàng)目打包,即前端項(xiàng)目打制品包,默認(rèn)是dist目錄
#先修改前端配置文件
展開Eclipse里的若依項(xiàng)目下的rouyi-ui工程,打開vue.config.js文件,修改網(wǎng)關(guān)IP地址:
  proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://localhost:8080`,	#這個(gè)配置為gateway網(wǎng)關(guān)的IP和端口
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }

#開始打包前端,生成制品
# cmd窗口進(jìn)入若依項(xiàng)目目錄,然后切換到ruoyi-ui目錄
cd ruoyi-ui
# 安裝依賴
#npm install	#執(zhí)行下面這條吧
# 強(qiáng)烈建議不要用直接使用 cnpm 安裝,會(huì)有各種詭異的 bug,可以通過重新指定 registry 來(lái)解決 npm 安裝速度慢的問題。
npm install --registry=https://registry.npmmirror.com

# 本地開發(fā) 啟動(dòng)項(xiàng)目
npm run dev		#此命令是本地開發(fā)環(huán)境下直接啟動(dòng)前端,執(zhí)行后會(huì)在cmd查看打印登錄url,復(fù)制粘貼到瀏覽器打開若依登錄頁(yè)面即可,賬號(hào)密碼默認(rèn)自動(dòng)回顯了
#ruoyi-ui下的README.md文件說明了如何啟動(dòng)構(gòu)建前端制品。

瀏覽器驗(yàn)證

cmd窗口執(zhí)行啟動(dòng):npm run dev
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes
登錄若依:
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes
成功添加了用戶:
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes

docker部署若依-微服務(wù)版本

上面windows演示的是dev開發(fā)環(huán)境,這次我們使用docker部署prod生產(chǎn)環(huán)境。

#官網(wǎng)寫的部署環(huán)境要求,所以選擇的版本要滿足要求
JDK >= 1.8 (推薦1.8版本)
Mysql >= 5.7.0 (推薦5.7版本)
Redis >= 3.0
Maven >= 3.0
Node >= 12
nacos >= 2.0.4 (ruoyi-cloud < 3.0 需要下載nacos >= 1.4.x版本)
sentinel >= 1.6.0
#準(zhǔn)備一臺(tái)centos7服務(wù)器
#安裝好docker,可參考https://blog.csdn.net/MssGuo/article/details/122694156,同時(shí)要安裝docker-compose
mkdir RuoYi-Cloud
cd RuoYi-Cloud
下載若依的源代碼:https://gitee.com/y_project/RuoYi-Cloud,克隆/下載,下載ZIP即可。下載后上傳到RuoYi-Cloud目錄即可。
#安裝jdk1.8
#去https://www.oracle.com/java/technologies/downloads/下載對(duì)應(yīng)版本的tar.gz包
tar -zxvf jdk1.8.tar.gz  -C /usr/local/
cd /usr/local/
mv jdk1.8.0_211  java
cat >> /etc/profile <<'EOF'
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile
java -version
#安裝maven,maven用于給java程序打jar包
wget https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
tar xf apache-maven-3.9.5-bin.tar.gz 
mv apache-maven-3.9.5 /opt/maven
cat >> /etc/profile <<'EOF'
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
EOF
source  /etc/profile
mvn -v
#安裝npm,npm用于生成前端制品,即給前端生成dist目錄
wget https://nodejs.org/dist/v14.4.0/node-v14.4.0-linux-x64.tar.xz
tar -xvf node-v14.4.0-linux-x64.tar.xz
mv node-v14.4.0-linux-x64 /usr/local/node
cat >> /etc/profile<<'EOF'
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
EOF
source  /etc/profile
npm -v
node -v
#解壓源碼包
unzip  RuoYi-Cloud-master.zip 
cd RuoYi-Cloud-master/
[root@rancher RuoYi-Cloud-master]# ll docker/	#可以看到源碼包里面已經(jīng)有docker相關(guān)的腳本了
total 12
-rw-r--r--. 1 root root 1155 Oct  2 12:46 copy.sh	#復(fù)制項(xiàng)目的jar文件到對(duì)應(yīng)docker路徑,便于一鍵生成鏡像
-rw-r--r--. 1 root root 1335 Oct  2 12:46 deploy.sh	#部署腳本
-rw-r--r--. 1 root root 3416 Oct  2 12:46 docker-compose.yml	#docker-compose文件,可以看到每個(gè)容器暴露的宿主機(jī)端口
drwxr-xr-x. 3 root root   34 Oct  2 12:46 mysql		#構(gòu)建mysql鏡像
drwxr-xr-x. 3 root root   36 Oct  2 12:46 nacos		#構(gòu)建nacos鏡像
drwxr-xr-x. 4 root root   48 Oct  2 12:46 nginx		#構(gòu)建nginx鏡像
drwxr-xr-x. 3 root root   36 Oct  2 12:46 redis		#構(gòu)建redis鏡像
drwxr-xr-x. 6 root root   62 Oct  2 12:46 ruoyi		#各個(gè)若依項(xiàng)目的Dockerfile構(gòu)建鏡像
[root@rancher RuoYi-Cloud-master]# 
#先修改后端各個(gè)子項(xiàng)目的bootstrap.yml配置文件
[root@rancher RuoYi-Cloud-master]# find ./ -name bootstrap.yml
./ruoyi-auth/src/main/resources/bootstrap.yml
./ruoyi-gateway/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
./ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
[root@rancher RuoYi-Cloud-master]# 
#修改bootstrap.yml文件中的環(huán)境配置為prod,nacos IP端口,添加nacos賬號(hào)密碼,命名空間等配置,示例如下:
vim ./ruoyi-auth/src/main/resources/bootstrap.yml
..............
  profiles:
    # 環(huán)境配置
    active: prod		#修改為prod,原來(lái)默認(rèn)是dev
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊(cè)地址
        server-addr: 192.168.xx.150:8848	#nacos的IP地址,因?yàn)榈认耼acos使用容器啟動(dòng)暴露的就是宿主機(jī)8848端口
        username: nacos		#添加nacos的賬號(hào)密碼
        password: nacos		#添加nacos的賬號(hào)密碼
      config:
        # 配置中心地址
        server-addr: 192.168.xx.150:8848	#nacos的IP地址,因?yàn)榈认耼acos使用容器啟動(dòng)暴露的就是宿主機(jī)8848端口
        username: nacos		#添加nacos的賬號(hào)密碼
        password: nacos		#添加nacos的賬號(hào)密碼
        namespace: prod		#指定nacos的命名空間是prod
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

#再修改前端vue.config.js配置文件
vim ruoyi-ui/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]: {
        target: `http://192.168.xx.150:8080`,		#修改為gateway的IP和端口,等下docker啟動(dòng)的網(wǎng)關(guān)容器就是暴露8080端口
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    },
    disableHostCheck: true
  },

.......
#后端項(xiàng)目打包,即后端項(xiàng)目打jar包
[root@rancher RuoYi-Cloud-master]# ls
bin  docker  LICENSE  pom.xml  README.md  ruoyi-api  ruoyi-auth  ruoyi-common  ruoyi-gateway  ruoyi-modules  ruoyi-ui  ruoyi-visual  sql
[root@rancher RuoYi-Cloud-master]# mvn clean package -Dmaven.test.skip=true			#在項(xiàng)目的根路徑執(zhí)行打包
#以上打包命令執(zhí)行完成會(huì)在每個(gè)子項(xiàng)目里面生成target命令,該target命令就存放有jar包

#前端項(xiàng)目打包
cd ruoyi-ui/	#進(jìn)入前端項(xiàng)目目錄
npm install --registry=https://registry.npmmirror.com
# 打包正式環(huán)境
npm run build:prod	#執(zhí)行這個(gè),因?yàn)槲覀兙褪且Mprod環(huán)境
構(gòu)建打包成功之后,會(huì)在根目錄生成 dist 文件夾,里面就是構(gòu)建打包好的文件,通常是 ***.js 、***.css、index.html 等靜態(tài)文件。

#下面兩個(gè)了解即可
npm run dev				# 本地開發(fā) 啟動(dòng)項(xiàng)目
npm run build:stage		# 打包預(yù)發(fā)布環(huán)境
#到底都有哪些環(huán)境?在前端目錄下的package.json文件中定義了好幾種配置環(huán)境,如下:
vim ruoyi-ui/package.json
  "scripts": {
    "dev": "vue-cli-service serve",
    "build:prod": "vue-cli-service build",
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src"
  }
#拷貝文件
#先修改mysql的建庫(kù)建表語(yǔ)句,不然mysql容器沒有創(chuàng)建若依的數(shù)據(jù)庫(kù)
[root@rancher ]# cd RuoYi-Cloud-master
[root@rancher RuoYi-Cloud-master]# ls sql/
quartz.sql  ry_20230706.sql  ry_config_20220929.sql  ry_seata_20210128.sql
#ry_20230706.sql是若依系統(tǒng)表,ry_config_20220929.sql是nacos的庫(kù)和表
#因?yàn)閞y_20230706.sql文件里沒有寫創(chuàng)建庫(kù)的語(yǔ)句,所以這里手動(dòng)添加創(chuàng)建ry-cloud庫(kù)的語(yǔ)句,庫(kù)名是官網(wǎng)規(guī)定的。
#如下,在ry_20230706.sql文件開頭添加即可:
DROP DATABASE IF EXISTS `ry-cloud`;
CREATE DATABASE  `ry-cloud` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE `ry-cloud`;

#nacos配置的數(shù)據(jù)庫(kù)源在application.properties文件
#檢查確認(rèn)即可,一般不用修改
[root@rancher docker]# ls nacos/conf/application.properties
[root@rancher ]# cd docker/		#進(jìn)入docker目錄
[root@rancher docker]# sh copy.sh 	#執(zhí)行腳本,腳本作用是拷貝前端、后端,SQL文件到當(dāng)前docker目錄對(duì)應(yīng)的目錄下
#啟動(dòng)、創(chuàng)建mysql、nacos、redis容器
cd RuoYi-Cloud-master/docker
cat deploy.sh 	#查看腳本內(nèi)容
[root@rancher docker]# sh deploy.sh -h
Usage: sh 執(zhí)行腳本.sh [port|base|modules|stop|rm]
[root@rancher docker]# sh deploy.sh base	#構(gòu)建mysql、redis、nacos鏡像并啟動(dòng)容器
[root@rancher docker]# docker ps -a			#查看啟動(dòng)的容器
CONTAINER ID   IMAGE                COMMAND                  CREATED              STATUS              PORTS                                                                                                      NAMES
e2a889d611e2   nacos/nacos-server   "bin/docker-startup.…"   About a minute ago   Up About a minute   0.0.0.0:8848->8848/tcp, :::8848->8848/tcp, 0.0.0.0:9848-9849->9848-9849/tcp, :::9848-9849->9848-9849/tcp   ruoyi-nacos
7bb841dc0b2e   mysql:5.7            "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                                                       ruoyi-mysql
220a10a7cae2   redis                "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                                  ruoyi-redis
#檢查redis容器的日志輸出,正常,在windows使用Redis Desktop Manager 正常鏈接redis
#檢查mysql容器的日志,顯示異常
2023-10-09T15:26:31.877145Z 2 [Note] Unknown database 'ry-config'
2023-10-09T15:26:34.922364Z 3 [Note] Unknown database 'ry-config'
2023-10-09T15:26:34.923423Z 4 [Note] Unknown database 'ry-config'
2023-10-09T15:26:36.925682Z 5 [Note] Unknown database 'ry-config'
#登錄mysql 容器檢查
[root@rancher docker]# docker exec -it ruoyi-mysql bash
root@43f59febb6b2:/# mysql -ppassword			#默認(rèn)的root密碼在docker-compose.yml中寫有
mysql> show databases;		#發(fā)現(xiàn)沒有創(chuàng)建ry-config庫(kù)
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| ry-cloud           |
| sys                |
+--------------------+
mysql> use ry-cloud;
mysql> show tables;		#ry-cloud也沒有創(chuàng)建表
Empty set (0.00 sec)
mysql> exit
root@43f59febb6b2:/# ls /docker-entrypoint-initdb.d/	#發(fā)現(xiàn)這里面沒有我們的建庫(kù)建表文件
root@43f59febb6b2:/# exit
[root@rancher mysql]# pwd
/root/RuoYi-Cloud/RuoYi-Cloud-master/docker/mysql
[root@rancher mysql]# ls
conf  data  db  dockerfile  logs
[root@rancher mysql]# cat dockerfile 	#查看dockerfile文件是怎么構(gòu)建mysql鏡像的
# 基礎(chǔ)鏡像
FROM mysql:5.7
# author
MAINTAINER ruoyi
# 執(zhí)行sql腳本
ADD ./db/*.sql /docker-entrypoint-initdb.d/
[root@rancher mysql]# 
#這說明構(gòu)建后的鏡像里面根本沒有建庫(kù)建表的文件,而ry-cloud庫(kù)是docker-compose.yml文件指定的創(chuàng)建庫(kù)名而已
#所以說根本沒有執(zhí)行建庫(kù)建表初始化操作
#手動(dòng)執(zhí)行初始化
docker cp mysql/db/ry_20230706.sql  ruoyi-mysql:/docker-entrypoint-initdb.d/
docker cp mysql/db/ry_config_20220929.sql  ruoyi-mysql:/docker-entrypoint-initdb.d/
docker exec -it ruoyi-mysql bash
mysql -ppassword
mysql> source /docker-entrypoint-initdb.d/ry_20230706.sql;
mysql> source /docker-entrypoint-initdb.d/ry_config_20220929.sql;
mysql> use mysql;		#授權(quán)讓mysql可以在windows鏈接
mysql> update user set host='%' where user='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
docker restart ruoyi-mysql
docker logs -f  ruoyi-mysql
#windows使用Navicat Premium鏈接mysql數(shù)據(jù)庫(kù)正常。

#重啟nacos,因?yàn)閙ysql倉(cāng)庫(kù)剛剛創(chuàng)建好,所需要重啟nacos容器
#nacos容器正常,瀏覽器登錄nacos
http://192.168.xx.150:8848/nacos/index.html	登錄賬號(hào)密碼:nacos/nacos
#由于前面我們java項(xiàng)目的bootstrap.yml配置文件定義的nacos命名空間是prod,所以在nacos上需要?jiǎng)?chuàng)建一個(gè)名稱叫做prod的命名空間
權(quán)限控制-->命名空間-->新建命名空間 --> 命名空間名稱填寫:prod -->描述寫生產(chǎn)環(huán)境即可-->確定
#克隆public命名空間的yml文件到prod 命名空間
配置管理--> 配置列表 --> 選擇public命名空間 -->勾選全部的yml文件 -->底部點(diǎn)擊克隆按鈕 -->目標(biāo)空間選擇prod -->把每一個(gè)文件名中的dev改成prod,如ruoyi-gateway-prod.yml--> 點(diǎn)擊克隆按鈕完成克隆即可

前面后端項(xiàng)目中的bootstrap.yml配置文件中的環(huán)境配置是prod,所以nacos中要存在"應(yīng)用名稱-環(huán)境配置.配置文件格式"拼接起來(lái)的文件,如ruoyi-gateway-prod.yml,所以上面克隆的時(shí)候我們修改了文件的名稱。
最后,修改prod命名空間下的每個(gè)yml文件中的redis,mysql相關(guān)的配置,最后發(fā)布即可。
#啟動(dòng)、創(chuàng)建前端和后端容器
#從該文件可以看到前端使用nginx配置,nginx配置文件中配置了代理的網(wǎng)關(guān)IP地址,默認(rèn)不用修改該文件
[root@rancher docker]# cat nginx/conf/nginx.conf 
[root@rancher docker]# grep -B 2 deploy.sh	#查看啟動(dòng)服務(wù)
modules(){
	docker-compose up -d ruoyi-nginx ruoyi-gateway ruoyi-auth ruoyi-modules-system
}

[root@rancher docker]# sh deploy.sh modules					#部署前端后端容器
[root@rancher docker]# docker logs -f ruoyi-modules-system	#日志正常
[root@rancher docker]# docker logs -f ruoyi-gateway			#日志正常
[root@rancher docker]# docker logs -f ruoyi-auth			#日志正常
[root@rancher docker]# docker logs -f ruoyi-nginx			#日志正常
[root@rancher docker]# docker port ruoyi-nginx				#前端暴露的80端口
80/tcp -> 0.0.0.0:80
80/tcp -> :::80

瀏覽器驗(yàn)證

瀏覽器驗(yàn)證:宿主機(jī)IP:80
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes
添加用戶正常:
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes

k8s部署若依-微服務(wù)版本

1、首先需要一個(gè)k8s集群,默認(rèn)你已經(jīng)安裝好了k8s集群并且有動(dòng)態(tài)存儲(chǔ)供給。
2、下載若依的源碼包并上傳到服務(wù)器master節(jié)點(diǎn)上,也可以放到一臺(tái)單獨(dú)的服務(wù)。

#創(chuàng)建mysql pod
cat >>mysql.yaml<<'EOF' 
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: mysql
  name: mysql
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  serviceName: mysql-svc
  template:
    metadata:
      annotations:
      labels:
        app: mysql
    spec:
      containers:
      - env:
        - name: MYSQL_ROOT_PASSWORD
          value: Aa123456
        image: mysql:5.7.35
        imagePullPolicy: IfNotPresent
        name: mysql
        ports:
        - containerPort: 3306
          name: tcp-3306
          protocol: TCP
        - containerPort: 33060
          name: tcp-33060
          protocol: TCP
        securityContext:
          privileged: true
        volumeMounts:
        - mountPath: /etc/localtime
          name: host-time
        - mountPath: /var/lib/mysql
          name: mysql
      restartPolicy: Always
      volumes:
      - hostPath:
          path: /etc/localtime
          type: ""
        name: host-time
  updateStrategy:
    rollingUpdate:
      partition: 0
    type: RollingUpdate
  volumeClaimTemplates:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: mysql
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: nfs-storageclass
      volumeMode: Filesystem
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: mysql-svc
  name: mysql-svc
  namespace: default
spec:
  clusterIP: None
  ports:
  - name: tcp-3306
    port: 3306
    protocol: TCP
    targetPort: 3306
  - name: tcp-33060
    port: 33060
    protocol: TCP
    targetPort: 33060
  selector:
    app: mysql
  sessionAffinity: None
  type: ClusterIP
EOF  
kubectl apply -f mysql.yml
#mysql導(dǎo)入數(shù)據(jù)
[root@master01 ~]# cd RuoYi-Cloud-master/sql/
[root@master01 sql]# ls
quartz.sql  ry_20230706.sql  ry_config_20220929.sql  ry_seata_20210128.sql
#ry_20230706.sql是若依系統(tǒng)表,ry_config_20220929.sql是nacos的庫(kù)和表
#因?yàn)閞y_20230706.sql文件里沒有寫創(chuàng)建庫(kù)的語(yǔ)句,所以這里手動(dòng)添加創(chuàng)建ry-cloud庫(kù)的語(yǔ)句,庫(kù)名是官網(wǎng)規(guī)定的。
#如下,在ry_20230706.sql文件開頭添加即可:
DROP DATABASE IF EXISTS `ry-cloud`;
CREATE DATABASE  `ry-cloud` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
USE `ry-cloud`;

[root@master01 sql]# kubectl  cp ry_20230706.sql mysql-0:/
[root@master01 sql]# kubectl  cp ry_config_20220929.sql mysql-0:/
[root@master01 sql]# kubectl  exec -it  mysql-0 -- bash
root@mysql-0:/# mysql -uroot -pAa123456
mysql> source /ry_20230706.sql;
mysql> source /ry_config_20220929.sql;
mysql> exit;
#創(chuàng)建redis
cat >>redis.yaml <<'EOF' 
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: redis
  name: redis
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  serviceName: redis-svc
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - args:
        - /etc/redis/redis.conf
        command:
        - redis-server
        image: redis:7.0.7
        imagePullPolicy: IfNotPresent
        name: redis
        ports:
        - containerPort: 6379
          name: tcp-6379
          protocol: TCP
        volumeMounts:
        - mountPath: /etc/localtime
          name: host-time
        - mountPath: /data
          name: reids-pvc
        - mountPath: /etc/redis
          name: redis-conf
          readOnly: true
      restartPolicy: Always
      volumes:
      - hostPath:
          path: /etc/localtime
          type: ""
        name: host-time
      - configMap:
          defaultMode: 420
          name: redis-config
        name: redis-conf
  volumeClaimTemplates:
  - apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: reids-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: nfs-storageclass
      volumeMode: Filesystem
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: redis-svc
  name: redis-svc
  namespace: default
spec:
  clusterIP: None
  ports:
  - name: tcp-6379
    port: 6379
    protocol: TCP
    targetPort: 6379
  selector:
    app: redis
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: v1
data:
  redis.conf: |-
    appendonly yes
    port 6379
    bind 0.0.0.0
    requirepass Aa123456	#redis 設(shè)置了密碼
kind: ConfigMap
metadata:
  name: redis-config
  namespace: default
EOF
kubectl apply -f redis.yml
#部署nacos
cat >> nacos.yml <<'EOF' 
---
apiVersion: v1
kind: Service
metadata:
  name: nacos-svc
  namespace: default
  labels:
    app: nacos
spec:
  ports:
    - port: 8848
      name: server
      targetPort: 8848
      nodePort: 30848
  type: NodePort
  selector:
    app: nacos
---
apiVersion: v1
kind: Service
metadata:
  name: nacos-headless
  namespace: default
  labels:
    app: nacos
spec:
  publishNotReadyAddresses: true 
  ports:
    - port: 8848
      name: server
      targetPort: 8848
  clusterIP: None
  selector:
    app: nacos
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-cm
  namespace: default
data:
  mysql.host: "mysql-svc.default"
  mysql.db.name: "ry-config"	#nacos要連接ry-config數(shù)據(jù)庫(kù)
  mysql.port: "3306"
  mysql.user: "root"
  mysql.password: "Aa123456"
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nacos
  namespace: default
spec:
  serviceName: nacos-headless
  replicas: 1 
  template:
    metadata:
      labels:
        app: nacos
      annotations:
        pod.alpha.kubernetes.io/initialized: "true"
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"
                    operator: In
                    values:
                      - nacos
              topologyKey: "kubernetes.io/hostname"
      containers:
        - name: nacos
          imagePullPolicy: Always
          image: nacos/nacos-server:latest
          resources:
            requests:
              memory: "1Gi"
              cpu: "800m"
          ports:
            - containerPort: 8848
              name: client-port
          env:  
            - name: NACOS_AUTH_TOKEN            
              value: "Ym1GamIzTWdhWE1nZG1WeWVTQm5iMjlrSUhOdlpuUjNZWEpsQ2c9PQo="
            - name: NACOS_AUTH_IDENTITY_KEY
              value: "nacos"
            - name: NACOS_AUTH_IDENTITY_VALUE
              value: "nacos" 
            - name: MODE    
              value: "standalone"                                                                                       
            - name: NACOS_REPLICAS
              value: "1"
            - name: SERVICE_NAME
              value: "nacos-headless"
            - name: DOMAIN_NAME
              value: "cluster.local"
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            - name: MYSQL_SERVICE_HOST
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.host
            - name: MYSQL_SERVICE_DB_NAME
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.db.name
            - name: MYSQL_SERVICE_PORT
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.port
            - name: MYSQL_SERVICE_USER
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.user
            - name: MYSQL_SERVICE_PASSWORD
              valueFrom:
                configMapKeyRef:
                  name: nacos-cm
                  key: mysql.password
            - name: SPRING_DATASOURCE_PLATFORM
              value: "mysql"
            - name: NACOS_SERVER_PORT
              value: "8848"
            - name: NACOS_APPLICATION_PORT
              value: "8848"
          volumeMounts:
            - name: data
              mountPath: /home/nacos/data
              subPath: data
            - name: data
              mountPath: /home/nacos/logs
              subPath: logs
  volumeClaimTemplates:
    - metadata:
        name: data
        annotations:
          volume.beta.kubernetes.io/storage-class: "nfs-storageclass"
      spec:
        accessModes: [ "ReadWriteMany" ]
        resources:
          requests:
            storage: 1Gi
  selector:     
    matchLabels:
      app: nacos
EOF
kubectl apply -f nacos.yml
#瀏覽器登錄nacos: http://192.168.xx.151:30848/nacos  賬號(hào)密碼:nacos/nacos
#在若依源碼包服務(wù)器上配置服務(wù)器環(huán)境,這里是master01節(jié)點(diǎn)
#安裝jdk1.8
#去https://www.oracle.com/java/technologies/downloads/下載對(duì)應(yīng)版本的tar.gz包
tar -zxvf jdk1.8.tar.gz  -C /usr/local/
cd /usr/local/
mv jdk1.8.0_211  java
cat >> /etc/profile <<'EOF'
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile
java -version

#安裝maven,maven用于給java程序打jar包
wget https://dlcdn.apache.org/maven/maven-3/3.9.5/binaries/apache-maven-3.9.5-bin.tar.gz
tar xf apache-maven-3.9.5-bin.tar.gz 
mv apache-maven-3.9.5 /opt/maven
cat >> /etc/profile <<'EOF'
export M2_HOME=/opt/maven
export MAVEN_HOME=/opt/maven
export PATH=${M2_HOME}/bin:${PATH}
EOF
source  /etc/profile
mvn -v

#安裝npm,npm用于生成前端制品,即給前端生成dist目錄
wget https://nodejs.org/dist/v14.4.0/node-v14.4.0-linux-x64.tar.xz
tar -xvf node-v14.4.0-linux-x64.tar.xz
mv node-v14.4.0-linux-x64 /usr/local/node
cat >> /etc/profile<<'EOF'
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
EOF
source  /etc/profile
npm -v
node -v
#先修改后端各個(gè)子項(xiàng)目的bootstrap.yml配置文件
[root@rancher RuoYi-Cloud-master]# find ./ -name bootstrap.yml
./ruoyi-auth/src/main/resources/bootstrap.yml
./ruoyi-gateway/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml
./ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
./ruoyi-visual/ruoyi-monitor/src/main/resources/bootstrap.yml
[root@rancher RuoYi-Cloud-master]# 
#修改bootstrap.yml文件中的環(huán)境配置為prod,nacos IP端口,添加nacos賬號(hào)密碼,命名空間等配置,示例如下:
vim ./ruoyi-auth/src/main/resources/bootstrap.yml
..............
  profiles:
    # 環(huán)境配置
    active: prod		#修改為prod,原來(lái)默認(rèn)是dev
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊(cè)地址
        server-addr: nacos-headless.default:8848	#nacos的svc地址
        username: nacos		#添加nacos的賬號(hào)密碼
        password: nacos		#添加nacos的賬號(hào)密碼
      config:
        # 配置中心地址
        server-addr: nacos-headless.default:8848	#nacos的svc地址
        username: nacos		#添加nacos的賬號(hào)密碼
        password: nacos		#添加nacos的賬號(hào)密碼
        namespace: prod		#指定nacos的命名空間是prod
        # 配置文件格式
        file-extension: yml
        # 共享配置
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

#再修改前端vue.config.js配置文件
vim ruoyi-ui/vue.config.js
.......
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://gateway-svc.default:8080`,		#修改為gateway的svc地址和端口,后面會(huì)創(chuàng)建gateway-svc這個(gè)service
        changeOrigin: true,
.......
#后端項(xiàng)目打包,即后端項(xiàng)目打jar包
[root@rancher RuoYi-Cloud-master]# mvn clean package -Dmaven.test.skip=true			#在項(xiàng)目的根路徑執(zhí)行打包
#以上打包命令執(zhí)行完成會(huì)在每個(gè)子項(xiàng)目里面生成target命令,該target命令就存放有jar包

#前端項(xiàng)目打包
cd ruoyi-ui/	#進(jìn)入ruoyi-ui前端項(xiàng)目目錄
npm install --registry=https://registry.npmmirror.com
# 打包正式環(huán)境
npm run build:prod	#執(zhí)行這個(gè),因?yàn)槲覀兙褪且舷辮rod環(huán)境,bootstrap.yml配置的環(huán)境也是prod
構(gòu)建打包成功之后,會(huì)在根目錄生成 dist 文件夾,里面就是構(gòu)建打包好的前端文件,通常是 ***.js 、***.css、index.html 等靜態(tài)文件。
#瀏覽器登錄nacos,創(chuàng)建prod命名空間
瀏覽器登錄nacos: http://192.168.xx.151:30848/nacos  賬號(hào)密碼:nacos/nacos
#由于前面我們java項(xiàng)目的bootstrap.yml配置文件定義的nacos命名空間是prod,所以在nacos上需要?jiǎng)?chuàng)建一個(gè)名稱叫做prod的命名空間
權(quán)限控制-->命名空間-->新建命名空間 --> 命名空間名稱填寫:prod -->描述寫生產(chǎn)環(huán)境即可-->確定
#克隆public命名空間的yml文件到prod 命名空間
配置管理--> 配置列表 --> 選擇public命名空間 -->勾選全部的yml文件 -->底部點(diǎn)擊克隆按鈕 -->目標(biāo)空間選擇prod -->把每一個(gè)文件名中的dev改成prod,如ruoyi-gateway-prod.yml--> 點(diǎn)擊克隆按鈕完成克隆即可

前面后端項(xiàng)目中的bootstrap.yml配置文件中的環(huán)境配置是prod,所以nacos中要存在"應(yīng)用名稱-環(huán)境配置.配置文件格式"拼接起來(lái)的文件,如ruoyi-gateway-prod.yml,所以上面克隆的時(shí)候我們修改了文件的名稱。
最后,修改prod命名空間下的每個(gè)yml文件中的redis,mysql相關(guān)的配置,相關(guān)的IP需要配置為svc域名,如:
 redis:
    host: redis-svc.default			#redis的域名
    port: 6379	
    password: Aa123456				#redis的密碼
datasource:							#mysql的域名nacos-headless.default
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://mysql-svc.default:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: Aa123456				#mysql的密碼
最后點(diǎn)擊發(fā)布即可。
#制作后端鏡像
[root@master01 RuoYi-Cloud-master]# cd docker/
[root@master01 docker]# sh copy.sh 	#執(zhí)行腳本復(fù)制子項(xiàng)目的jar到當(dāng)前docker目錄下的對(duì)應(yīng)目錄
#構(gòu)建auth鏡像
[root@master01 docker]# cd ruoyi/auth
[root@master01 auth]# docker build -t docker-ruoyi-auth:latest .
#構(gòu)建gateway鏡像
[root@master01 docker]# cd ruoyi/gateway/
[root@master01 gateway]# docker build -t docker-ruoyi-gateway:latest .
#構(gòu)建model-system鏡像
[root@master01 docker]# cd ruoyi/modules/system/
[root@master01 system]# docker build -t docker-ruoyi-system:latest .
#制作前端鏡像
[root@master01 docker]# cd nginx/
[root@master01 nginx]# vim  conf/nginx.conf		#編輯配置文件
     location /prod-api/{
			.......
            proxy_pass http://gateway-svc.default:8080/;			#修改proxy_pass參數(shù)的gateway域名
        }
[root@master01 nginx]# docker build -t nginx:v1 .	#注意前端鏡像tag不要寫latest,否則構(gòu)建出來(lái)的鏡像會(huì)有問題,因?yàn)閐ockerfile中FROM就是nginx
#創(chuàng)建auth的k8s資源
cat >>ruoyi-auth.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ruoyi-auth
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      nodeName: master01
      containers:
      - image: docker-ruoyi-auth
        imagePullPolicy: IfNotPresent
        name: ruoyi-auth
        ports:
        - containerPort: 9200
          name: auth-9200
          protocol: TCP
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: auth-svc
  name: auth-svc
  namespace: default
spec:
  ports:
  - name: auth-svc
    port: 9200
    protocol: TCP
    targetPort: 9200
  selector:
    app: auth 
  sessionAffinity: None
  type: ClusterIP
EOF
kubectl  apply  -f ruoyi-auth.yaml 
kubectl  logs  -f ruoyi-auth-7f9f89c4cb-c6wm5 

#創(chuàng)建gateway相關(guān)的k8s資源
cat >>ruoyi-gateway.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ruoyi-gateway
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gateway 
  template:
    metadata:
      labels:
        app: gateway
    spec:
      nodeName: master01
      containers:
      - image: docker-ruoyi-gateway
        imagePullPolicy: IfNotPresent
        name: ruoyi-gateway
        ports:
        - containerPort: 8080
          name: gateway-8080
          protocol: TCP
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: gateway-svc
  name: gateway-svc
  namespace: default
spec:
  ports:
  - name: gateway-svc		#這個(gè)svc在前端的配置文件中引用了
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: gateway 
  sessionAffinity: None
  type: ClusterIP
EOF
kubectl  apply  -f ruoyi-gateway.yaml 
kubectl  logs  -f ruoyi-gateway-6f6497d6fb-5bl7h 
#創(chuàng)建gateway相關(guān)的k8s資源
cat >>ruoyi-system.yaml<<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ruoyi-system
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: system
  template:
    metadata:
      labels:
        app: system
    spec:
      nodeName: master01
      containers:
      - image: docker-ruoyi-system
        imagePullPolicy: IfNotPresent
        name: ruoyi-system
        ports:
        - containerPort: 9201
          name: system-9201
          protocol: TCP
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: system-svc
  name: system-svc
  namespace: default
spec:
  ports:
  - name: system-svc
    port: 9201
    protocol: TCP
    targetPort: 9201
  selector:
    app: system
  sessionAffinity: None
  type: ClusterIP
EOF
kubectl  apply  -f ruoyi-system.yaml
kubectl  logs  -f ruoyi-system-7d5858d47d-fr7wc 
#創(chuàng)建前端nginx的k8s資源
cat >>ruoyi-nginx.yaml <<'EOF'
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: ruoyi-nginx
  name: ruoyi-nginx
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ruoyi-nginx
  template:
    metadata:
      labels:
        app: ruoyi-nginx
    spec:
      nodeName: master01
      containers:
      - image: nginx:v1
        imagePullPolicy: IfNotPresent
        name: ruoyi-nginx
        ports:
        - containerPort: 80
          name: tcp-80
          protocol: TCP
      restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: ruoyi-nginx-svc
  name: ruoyi-nginx-svc 
  namespace: default
spec:
  ports:
  - nodePort: 30888
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: ruoyi-nginx
  type: NodePort
EOF
kubectl appl -f ruoyi-nginx.yaml
[root@master01 docker]# kubectl  get -f ruoyi-nginx.yaml 
NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ruoyi-nginx   1/1     1            1           3h28m

NAME                      TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/ruoyi-nginx-svc   NodePort   10.106.135.173   <none>        80:30888/TCP   3h28m
#nginx 訪問端口就是30888

瀏覽器驗(yàn)證

登錄:
url為master節(jié)點(diǎn)IP+ruoyi-nginx-svc的外部端口30888。
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes
創(chuàng)建用戶正常:
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes

總結(jié)

1、關(guān)于nacos的配置
以上我們熟悉了在java程序中nacos是如何配置的,即在每一個(gè)子項(xiàng)目中都會(huì)有一個(gè)bootstrap.yml文件,我們來(lái)仔細(xì)解讀一下該文件:

cat ./ruoyi-auth/src/main/resources/bootstrap.yml
# Tomcat
server: 
  port: 9200	#程序的端口
# Spring
spring: 
  application:
    # 應(yīng)用名稱
    name: ruoyi-auth	#應(yīng)用名稱,nacos中配置文件一般也與應(yīng)用名稱對(duì)應(yīng)
  profiles:
    # 環(huán)境配置
    active: prod		#指定環(huán)境配置,程序啟動(dòng)時(shí)會(huì)激活對(duì)應(yīng)的環(huán)境,nacos會(huì)根據(jù)這個(gè)環(huán)境來(lái)讀取對(duì)應(yīng)的文件,
#現(xiàn)在環(huán)境配置是prod,那么nacos中會(huì)存在"應(yīng)用名稱-環(huán)境配置.配置文件格式"拼接起來(lái)的文件,如ruoyi-auth-prod.yml,程序啟動(dòng)時(shí)就會(huì)讀該文件
  cloud:
    nacos:
      discovery:
        # 服務(wù)注冊(cè)地址
        server-addr: 192.168.xx.150:8848	#nacos的IP地址
        username: nacos		#nacos的賬號(hào)密碼
        password: nacos		#nacos的賬號(hào)密碼
      config:
        # 配置中心地址
        server-addr: 192.168.xx.150:8848	#nacos的IP地址,因?yàn)榈认耼acos使用容器啟動(dòng)暴露的就是宿主機(jī)8848端口
        username: nacos		#nacos的賬號(hào)密碼
        password: nacos		#nacos的賬號(hào)密碼
        namespace: prod		#指定nacos的命名空間,默不寫該參數(shù)默認(rèn)是public命名空間
        # 配置文件格式
        file-extension: yml	#一般與nacos的配置文件對(duì)應(yīng)
        # 共享配置
        shared-configs:		#可以看到這個(gè)參數(shù)拼接起來(lái)就是application-prod.yml文件,而這個(gè)文件是nacos上面有的
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
#下面是一段ruoyi-auth啟動(dòng)日志
#可以看的出來(lái),激活的是prod環(huán)境,讀取的配置文件是ruoyi-auth.yml
16:28:03.574 [main] WARN  c.a.c.n.c.NacosPropertySourceBuilder - [loadNacosData,87] - Ignore the empty nacos configuration and get it based on dataId[ruoyi-auth] & group[DEFAULT_GROUP]
16:28:03.581 [main] WARN  c.a.c.n.c.NacosPropertySourceBuilder - [loadNacosData,87] - Ignore the empty nacos configuration and get it based on dataId[ruoyi-auth.yml] & group[DEFAULT_GROUP]
16:28:03.607 [main] INFO  c.r.a.RuoYiAuthApplication - [logStartupProfileInfo,637] - The following 1 profile is active: "prod"
16:28:05.975 [main] INFO  o.a.c.h.Http11NioProtocol - [log,173] - Initializing ProtocolHandler ["http-nio-9200"]
16:28:05.988 [main] INFO  o.a.c.c.StandardService - [log,173] - Starting service [Tomcat]


#前端鏈接后端是如何配置的,答案是在前端的配置文件里面配置了網(wǎng)關(guān)的IP和端口
#前端vue.config.js配置文件
vim ruoyi-ui/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]: {
        target: `http://192.168.xx.150:8080`,		#gateway網(wǎng)關(guān)的IP和端口,表示前端的請(qǐng)求要轉(zhuǎn)發(fā)給這個(gè)網(wǎng)關(guān)
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
    },
    disableHostCheck: true
  },
#前端打包時(shí)到底都有哪些環(huán)境?在前端目錄下的package.json文件中定義了好幾種配置環(huán)境,如下:
vim ruoyi-ui/package.json
  "scripts": {
    "dev": "vue-cli-service serve",
    "build:prod": "vue-cli-service build",
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src"
  }
所以進(jìn)入前端項(xiàng)目目錄
cd ruoyi-ui/	
npm install --registry=https://registry.npmmirror.com
npm run build:prod		# 打包正式環(huán)境
npm run dev				# 本地開發(fā) 啟動(dòng)項(xiàng)目
npm run build:stage		# 打包預(yù)發(fā)布環(huán)境  
構(gòu)建打包成功之后,會(huì)在根目錄生成dist目錄,里面就是構(gòu)建打包好的文件,通常是 ***.js 、***.css、index.html 等靜態(tài)文件。
然后將dist目錄的靜態(tài)文件發(fā)布nginx服務(wù)器即可啟動(dòng)前端。這個(gè)dist目錄也是可以配置的,在ruoyi-ui/vue.config.js配置文件中的outputDir參數(shù)配置。
#settings.js配置文件
vim ruoyi-ui/src/settings.js	#settings.js配置文件可以定義前端顯示的布局

2、前端使用nginx啟動(dòng)
前端使用nginx啟動(dòng),在nginx.conf文件配置了反向代理到網(wǎng)關(guān)地址。
3、下面是auth程序啟動(dòng)日志
可以看到,程序啟動(dòng)時(shí)區(qū)注冊(cè)nacos,并且激活的是prod環(huán)境,鏈接的配置文件是ruoyi-auth.yml文件。
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes
jar包中bootstrap.yml文件:
vim ruoyi-auth.jar
docker部署若依微服務(wù),kubernetes,微服務(wù),docker,kubernetes文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-757494.html

到了這里,關(guān)于若依微服務(wù)部署,裸服務(wù)部署、docker部署、k8s部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在Kubernetes(k8s)上部署整個(gè)SpringCloud微服務(wù)應(yīng)用

    在Kubernetes(k8s)上部署整個(gè)SpringCloud微服務(wù)應(yīng)用

    視頻教程地址:https://www.bilibili.com/video/BV1Xh4y1q7aW/ 這次我準(zhǔn)備了一個(gè)微服務(wù)項(xiàng)目,是依照RuoYi-Cloud(http://doc.ruoyi.vip/ruoyi-cloud/)進(jìn)行了一些修改所得到的微服務(wù)項(xiàng)目。重點(diǎn)是修改了如圖根據(jù)不同環(huán)境添加了不同的配置文件: 項(xiàng)目代碼地址為:https://gitcode.net/m0_51510236/yueyang-cloud 我

    2024年02月05日
    瀏覽(16)
  • 【Kubernetes】第二十二篇 - k8s 部署 MySQL 服務(wù)(secret、deployment、service)

    上一篇,介紹基于 k8s 項(xiàng)目部署流程設(shè)計(jì); 本篇,介紹 MySQL 服務(wù)的部署; 部署 MySQL 可以為指定 node 添加污點(diǎn),專門用于 mysql 部署(當(dāng)前只有一個(gè)節(jié)點(diǎn),不考慮); 為了保證mysql容器重啟時(shí)數(shù)據(jù)不會(huì)丟失:創(chuàng)建 mysql 數(shù)據(jù)目錄,用于存儲(chǔ) mysql 數(shù)據(jù),實(shí)現(xiàn) MySQL 數(shù)據(jù)的持久化;

    2024年02月03日
    瀏覽(52)
  • Kubernetes(k8s)實(shí)戰(zhàn):Kubernetes(k8s)部署Springboot項(xiàng)目

    Kubernetes(k8s)實(shí)戰(zhàn):Kubernetes(k8s)部署Springboot項(xiàng)目

    wordpress是用于快速搭建博客系統(tǒng)。 該yaml文件創(chuàng)建一個(gè)mysql,并且生成一個(gè)service,service對(duì)外暴露的端口是3306 我們發(fā)現(xiàn),搭建成功了,用瀏覽器訪問192.168.56.101:30493,發(fā)現(xiàn)訪問成功了! 在集群中,pod之間可以通過service 的name進(jìn)行訪問,不僅僅是ip,這就意味著,service中不僅幫

    2024年02月12日
    瀏覽(32)
  • Jenkins K8S Docker 一鍵部署SpringCloud微服務(wù)

    Jenkins K8S Docker 一鍵部署SpringCloud微服務(wù)

    一鍵部署springcloud微服務(wù),需要用到 Jenkins K8S Docker等工具,若未安裝,請(qǐng)參考《Centos 7 安裝K8S》 本文使用jenkins部署,流程如下圖 開發(fā)者將代碼push到git 運(yùn)維人員通過jenkins部署,自動(dòng)到git上pull代碼 通過maven構(gòu)建代碼 將maven構(gòu)建后的jar打包成docker鏡像 并 push docker鏡像到docker

    2024年02月02日
    瀏覽(26)
  • Kubernetes(K8S)拉取本地鏡像部署Pod 實(shí)現(xiàn)類似函數(shù)/微服務(wù)功能(可設(shè)置參數(shù)并實(shí)時(shí)調(diào)用)

    Kubernetes(K8S)拉取本地鏡像部署Pod 實(shí)現(xiàn)類似函數(shù)/微服務(wù)功能(可設(shè)置參數(shù)并實(shí)時(shí)調(diào)用)

    ?????????以兩數(shù)相加求和為例,在kubernetes集群 拉取本地的鏡像 ,實(shí)現(xiàn)如下效果: ????????1.實(shí)現(xiàn)兩數(shù)相加求和 ????????2.可以通過curl 實(shí)時(shí)調(diào)用 , 參數(shù) 以GET方式提供,并得到結(jié)果。(類似 調(diào)用函數(shù) ) ? ? ? ? 需要準(zhǔn)備如下的文件。文件名與對(duì)應(yīng)的功能如下所示

    2024年01月20日
    瀏覽(29)
  • 【業(yè)務(wù)功能118】微服務(wù)-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-OpenELB部署及應(yīng)用

    【業(yè)務(wù)功能118】微服務(wù)-springcloud-springboot-Kubernetes集群-k8s集群-KubeSphere-OpenELB部署及應(yīng)用

    網(wǎng)址: openelb.io OpenELB 是一個(gè)開源的云原生負(fù)載均衡器實(shí)現(xiàn),可以在基于裸金屬服務(wù)器、邊緣以及虛擬化的 Kubernetes 環(huán)境中使用 LoadBalancer 類型的 Service 對(duì)外暴露服務(wù)。OpenELB 項(xiàng)目最初由 KubeSphere 社區(qū)發(fā)起,目前已作為 CNCF 沙箱項(xiàng)目加入 CNCF 基金會(huì),由 OpenELB 開源社區(qū)維護(hù)與支

    2024年02月03日
    瀏覽(38)
  • Kubernetes(K8S)集群部署

    Kubernetes(K8S)集群部署

    目錄 一、創(chuàng)建3臺(tái)虛擬機(jī) 二、為每臺(tái)虛擬機(jī)安裝Docker 三、安裝kubelet 3.1 安裝要求 3.2 為每臺(tái)服務(wù)器完成前置設(shè)置 3.3 為每臺(tái)服務(wù)器安裝kubelet、kubeadm、kubectl 四、使用kubeadm引導(dǎo)集群 4.1 master服務(wù)器 4.2 node1、node2服務(wù)器 4.3 初始化主節(jié)點(diǎn) 4.4 work節(jié)點(diǎn)加入集群 五、token過期怎么辦?

    2024年02月07日
    瀏覽(134)
  • yum部署kubernetes(k8s)集群、k8s常用資源管理

    目錄 一、環(huán)境搭建 1、準(zhǔn)備環(huán)境 1)計(jì)算機(jī)說明,建議系統(tǒng)版本7.4或者7.6 2)修改所有主機(jī)的計(jì)算機(jī)名設(shè)置host文件 ?2、安裝master節(jié)點(diǎn) 1)安裝etcd配置etcd 2)安裝k8s-master節(jié)點(diǎn) 3)配置apiserver 4)配置controller和scheduler 5)啟動(dòng)k8s服務(wù) 3、安裝k8s-master上的node 1)安裝node 2)配置kube

    2024年02月13日
    瀏覽(35)
  • Kubernetes(K8s)基本環(huán)境部署

    Kubernetes(K8s)基本環(huán)境部署

    此處只做學(xué)習(xí)使用,配置單master環(huán)境。 1、ip+主機(jī)規(guī)劃(準(zhǔn)備五臺(tái)新機(jī))==修改各個(gè)節(jié)點(diǎn)的主機(jī)名 注意:關(guān)閉防火墻與selinux 節(jié)點(diǎn) 主機(jī)名 ip 身份 joshua1 kubernetes-master.openlab.cn 192.168.134.151 master joshua2 kubernetes-work1.openlab.cn 192.168.134.152 work1 joshua3 kubernetes-work2.openlab.cn 192.168.134.153

    2024年02月10日
    瀏覽(28)
  • Kubernetes(k8s)集群安裝部署

    Kubernetes(k8s)集群安裝部署

    名稱 IP 系統(tǒng) 配置 主控節(jié)點(diǎn) 192.168.202.101 CentOS 7.9.2009 2核4G 工作節(jié)點(diǎn)1 192.168.202.102 CentOS 7.9.2009 2核4G 工作節(jié)點(diǎn)2 192.168.202.103 CentOS 7.9.2009 2核4G 2.1 升級(jí)操作系統(tǒng)內(nèi)核 導(dǎo)入elrepo gpg key 安裝elrepo YUM源倉(cāng)庫(kù) 安裝kernel-ml版本,ml為長(zhǎng)期穩(wěn)定版本,lt為長(zhǎng)期維護(hù)版本 設(shè)置grub2默認(rèn)引導(dǎo)為0 重

    2024年02月10日
    瀏覽(97)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包