RuoYi前后端分离且后端多模块二次开发后通过docker部署到服务器(2022.11.15最新)

1.环境准备

1.centos 7
2.docker
3.mysql  8.0.16
4.java   8
5.nginx  latest
6.redis  latest

2.项目配置文件的修改以及项目打包

2.1后端文件修改

application.yml 修改服务器的HTTP端口,默认为8080,根据需求修改

application-druid.yml修改数据库mysql和redis连接配置

 ​​​​​

 2.2后端项目打包

虽然RruoYI是多模块,但是ruoyi-admin模块依赖其他模块,所以只需要获取admin模块的jar包即可,但是打包的时候需要全局打包。

找到项目的根目录进行全局打包。然后在ruoyi-admin模块下找到生成target目录将ruoyi-admin.jar存储在桌面,方便后续传到服务器。

 

 2.3前端文件修改

①修改vue.config.js文件

 2.4前端打包

 ①运行npm run build:prod命令生成dist文件夹并存放在桌面,方便后续传输到服务器

2.5.文件传输到服务器

通过xshell连接服务器,然后在通过Xftp将dist和ruoyi-admin.jar传输到服务器

 3.服务器端

1.软件:docker的下载和nginx、redis、mysql的镜像的拉取

2.镜像的启动:

mysql:

docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \ //让容器具有root的权限
--restart unless-stopped \ //自动重启
-e MYSQL_ROOT_PASSWORD=****** \ //密码谨慎配置不要123456了,不然黑客会找到你!!!
-d mysql \
--lower_case_table_names=1  //建表时候所有字符转为小写

注意:除了设置复杂的密码外,最好将mysql默认的root用户名修改,这样黑客暴力破解就更难了

 redis:

docker run \
-p 6379:6379 \
--name redis \
--restart=always \
-v /home/redis/data/:/data \
-d redis:3.2 redis-server \
--appendonly yes  //必须持久化

注意:运行镜像的时候一定要设置持久化操作--appendonly yes,然后运行redis镜像后,最好进入redis设置相应的密码,不然后面你会吃很多亏(也可以--requirepass 123456设置密码,但是有时候不生效)。

1.进入redis
docker exec -it 容器id /bin/bash

2.运行命令:
redis-cli

3.查看现有的redis密码:
config get requirepass

4.设置redis密码
config set requirepass 密码

5.exit

nginx:

docker run --privileged  -p 80:80 -p 443:443 \
  -d --restart=always \
 --name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
-v /home/nginx/html:/usr/share/nginx/html:rw \
-v /home/nginx/logs:/var/log/nginx -d nginx

注意:nginx的挂载目录需要事先创建好,不然启动nginx的时候会秒退。

然后进入nginx.conf配置文件增加以下内容

 server {
        listen       80;
        server_name  服务器ip;		# 用服务器ip代替

        location / {
            root   /usr/share/nginx/html/dist/;
            index  index.html index.htm index login;
            try_files $uri $uri/ /index.html last;
        }
        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://服务器ip:8085/;		# 可以用服务器ip代替
        }
        error_page   500 502 503 504  /50x.html;
            location = /50x.html {
            root   html;
        }
     }

注意:在nginx.conf增加以上内容后,与此同时需要修改/home/nginx/conf/conf.d文件夹下的default.conf文件,因为nginx.conf是引入了default.conf,需要将default.conf文件的相应server部分删除,不然前端配置文件 /usr/share/nginx/html/dist/会不生效。但是你也可以只改动default.conf文件的server部分就需要改动nginx.conf文件了

3.DockerFile的创建

3.1 首先将ruoyi-admin.jar 包和dockerFile文件放在同一目录下

3.2 创建

FROM java:8
EXPOSE 8085

VOLUME /tmp

ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/{TZ} /etc/localhosttime && echo "{TZ}" > /etc/timezone

ADD ruoyi-admin.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

运行下面命令生成镜像:

docker build -t ruoyi-vue .

注意:不要少一个 .

通过docker images查看redis、mysql、nginx、ruoyi-vue,java五个镜像是否存在

然后运行镜像:

docker run -d -p 8085:8085 --name vue ruoyi-vue 

通过 docker ps 命令查看正在运行的镜像,redis、mysql、nginx、ruoyi-vue都正常运行

最后通过ip:8085就可以正常游览器访问了!!!

提醒:1.若启动镜像时,发现启动成功了,但是过一会用docker ps 又查看不到正在运行,可以用docker logs 容器id 来查看日志,然后通过相应的报错来解决问题

2.若你的springBoot项目里的功能与系统的时间有关联,则需要将系统时间与现实时间相统一,不然你的项目会报错!

3.启动镜像的时候最好设置--restart=always,同时docker也要设置开机自启,以防意外原因退出。

4.所有任务完成后,防火墙设置开启指定端口(80,3306,6379,8085)后,开启防火墙!!!

祝大家一切顺利!!!

猜你喜欢

转载自blog.csdn.net/weixin_47450271/article/details/127867272
今日推荐