要想部署若依,我用的是3.8.6版本的若依版本,当你用若依进行二次开发,开发完后,想把若依部署在服务器上
搞懂部署若依需要多少容器
若以前后端分离版有后端,前端,要用到mysql数据库,用到redis,所以要创建四个容器
打包后端工程
项目开发完后想部署,要把新项目打包,后端项目打包,我是用idea完成项目二次开发的,在idea中打包后端工程,在打包工程前修改一下数据,在ruoyi-admin模块中的配置文件application.yml中
修改一下连接redis的参数,地址修改成你要创建的redis的容器的名,我等下要创建redis容器名字是redis
密码设置成你的密码。端口一般不会去改,是6379
这是连接mysql数据库的参数,把url中的
jdbc:mysql://mysql:3306/ruoyi?
第二个mysql改成你要创建的mysql容器的名字,我等下创建mysql容器的名字是mysql
jdbc:mysql://localhost:3306/ruoyi?
3306是连接mysql的端口,一般不会去改
3306/ruoyi 后面的ruoyi表示连接的使用mysql的哪个数据库看你把数据放在哪个库,就写那个库 ,把username跟password改成你的数据库的用户名跟密码
还要修改配置
修改文件路径profile的值 ,本来的值是 D:/ruoyi/uploadPath ,你要部署到服务器上,把路径改成
/home/ruoyi/uploadPath
好了,后端要修改的配置就修改好了
要进行把后端项目打包,我是使用maven插件打包的
打开idea右边的maven,打包前双击clean,清理一下数据,清理完后双击package开始打包,等一会后项目就会打包完毕
要是你不用maven插件打包,你可以在项目的bin目录下打开命令行,就是终端
idea下面有个,按就行了会打开终端,在终端输入命令 java -jar ruoyi.jar就行了
注意:若依项目的启动类在ruoyi-admin模块,整个项目运行就是靠ruoyi-admin模块的,所以打包后你会看到每个模块下都会有jar包,我们只需要ruoyi-admin模块下的jar包就好了
好了后端工程就打包好了
打包前端工程
在打包前端工程前修改一下配置
找到ruoyi-ui 这是ruoyi的前端工程,打开ruoyi-ui找到vue.config.js配置文件
在文件中找到
这是若依前端请求的代理转发配置,把target 中的值修改成你要创建后端容器的名,,`http://ruoyi:8080` 我等下创建后端容器的名字是ruoyi。注意地址是由反引号 ` ` 括起来的,8080是后端项目端口号,
没有修改是8080,一般不去修改,前端就改好了,找到ruoyi-ui下的pachage.json脚本文件
找到
是要打包工程,点击build:prod左边的绿色按钮
开始打包前端工程,等一下完成后,就会在ruoyi-ui下会有一个dist文件,里面的文件就打包的文件
创建网络
在创建容器时,创建一个网络,把之后创建的容器都拉进同一个网络下,这样实现不同容器之间的访问就不用输入地址了,输入容器名就可以访问了,所以我前面设置redis,mysql连接地址参数时,把地址名写成redis,mysql,不用写数字
docker network create ruoyi
创建mysql容器
前后端打包好后开始创建容器,创建mysql容器
在linux中输入命令拉取mysql镜像
docker pull mysql
完整写法是,docker pull mysql:5.7 要跟上mysql镜像的版本,不写版本表示拉取的镜像是最新的版本,在root目录下新建一个文件夹mysql里面新建三个文件夹conf,init,data,要挂载文件
执行命令开始创建容器
-
挂载
/root/mysql/data
到容器内的/var/lib/mysql
目录 -
挂载
/root/mysql/init
到容器内的/docker-entrypoint-initdb.d
目录(初始化的SQL脚本目录) -
挂载
/root/mysql/conf
到容器内的/etc/mysql/conf.d
目录(这个是MySQL配置文件目录)
在init文件夹中放入后端项目的sql文件,容器创建时会自动执行sql语句
在conf中放入mysql的配置文件,自己创建一个文件后缀名是cnf
配置文件内容是
[client]
default_character_set=utf8mb4
[mysql]
default_character_set=utf8mb4
[mysqld]
character_set_server=utf8mb4
collation_server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-name-resolve
开始执行命令创建容器,设置mysql的密码,自
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123456 \
--security-opt seccomp=unconfined \
-v ./mysql/data:/var/lib/mysql \
-v ./mysql/conf:/etc/mysql/conf.d \
-v ./mysql/init:/docker-entrypoint-initdb.d \
--network ruoyi \
mysql
-e MYSQL_ROOT_PASSWORD=123456 //这是设置mysql的密码
--name mysql //这是设置mysql容器的名
--security-opt seccomp=unconfined //表示这是docker认证,这是Docker的Seccomp安全限制问题,在启动的命令后面添加 --security-opt seccomp=unconfined
忽略安全验证
--network ruoyi //容器加入ruoyi网络
mysql容器创建完成
创建redis容器
开始创建redis容器,在root目录下新建一个文件夹redis,在里面新建conf ,data目录
创建容器要挂载文件
挂载/root/redis/conf/redis.conf到容器内的/usr/local/etc/redis/redis.conf
挂载/root/redis/data到容器内的/data
在conf文件夹中新建一个配置文件redis.conf,后缀名是conf就行
里面的内容
#表示所有主机能访问redis
bind 0.0.0.0
#指定redis的端口号
port 6379
#指定redis的密码
requirepass 123456
执行命令创建redis容器
docker run \
--name redis \
-p 6379:6379 \
-v /root/redis/conf:/usr/local/etc/redis \
-v /root/redis/data:/data \
-d \
--network ruoyi \
redis \
redis-server /usr/local/etc/redis/redis.conf
--name redis //这是创建的redis容器的名
--network ruoyi //把创建的redis容器加入ruoyi容器
redis容器创建好了
创建nginx容器
nginx容器时部署前端的容器
在root目录下新建一个目录nginx,在里面新建html,conf两个目录
创建容器要挂载文件
-
把
/root/nginx/conf/nginx.conf
挂载到/etc/nginx/nginx.conf
-
把
/root/nginx/html
挂载到/usr/share/nginx/html
在conf中新建一个配置文件nginx.conf,这是nginx的配置文件,
我的配置文件内容时
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 /home/ruoyi/projects/ruoyi-ui;
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/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
proxy_pass http://localhost:8080/
这是指定了后端项目的地址,改成后端容器的名,等下创建的后端容器名是ruoyi
proxy_pass http://ruoyi:8080/
在html文件夹中把刚才前端打包好的文件dist中的文件全部复制进html目录中
输入命令创建nginx容器
docker run -d \
--name nginx \
-p 80:80 \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
--network ruoyi \
nginx
--network ruoyi //把创建的nginx容器加入ruoyi网络
创建部署后端的容器
创建后端容器要自己创建镜像,在root目录中新建一个一个Dockerfile文件,文件名字就叫Dockerfile,没有后缀就是Dockerfile,是用来创建镜像的。文件内容是
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 挂载目录
VOLUME /home/ruoyi
# 创建目录
RUN mkdir -p /home/ruoyi
# 指定路径
WORKDIR /home/ruoyi
# 拷贝jar包
COPY ruoyi-admin.jar /home/ruoyi/app.jar
# 入口
ENTRYPOINT ["java", "-jar", "app.jar"]
COPY ruoyi-admin.jar /home/ruoyi/app.jar //表示把宿主机就是服务器ruoyi-admin.jar 复制到 容器中的 /home/ruoyi/app.jar中,ruoyi-admin.jar是你后端项目的jar包的位置,我把jar包放在root目录中,可以这样写,你可以
这样写
COPY /root/ruoyi-admin.jar /home/ruoyi/app.jar
注意:文件别的内容不要改,就是这样
开始制作java后端项目的镜像
执行命令
docker build -t ruoyi:1.0 /root/Dockerfile
ruoyi:1.0 //表示镜像名是ruoyi,版本是1.0
制作好镜像后,开始创建容器,要挂载目录,在root目录下新建一个文件夹ruoyi,在ruoyi文件中新建一个文件夹iploadPath
要挂载 /root/ruoyi/uploadPath到容器的目录 /home/ruoyi/uploadPath
输入命令执行
docker run -d \
--name ruoyi \
-p 8080:8080 \
-v /root/ruoyi/uploadPath:/home/ruoyi/uploadPath \
--network \
ruoyi \
ruoyi:1.0
--name ruoyi //创建的容器名是ruoyi
--network ruoyi //把创建的容器ruoyi加入ruoyi网络
这时容器就全部创建好了,打开浏览器输入服务器的地址就可以访问了
至此,这就是docker 部署若依前后端分离版的内容了,谢谢你的观看