一、环境准备

服务器

阿里云 ECS服务器

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器


在安全组中开启端口(可以通过快速添加加入)

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_docker_02

软件
本次部署采用的是 docker,软件环境都在 docker 上
需要提前 MySQL ,Redis,Nginx镜像
二、运行镜像

通过XShell远程连接

MySQL安装

docker run \
-p 3306:3306 \
--name mysql \
--privileged=true \
--restart unless-stopped \
-v /home/mysql8.0.20/mysql:/etc/mysql \
-v /home/mysql8.0.20/logs:/logs \
-v /home/mysql8.0.20/data:/var/lib/mysql \
-v /home/mysql8.0.20/mysql-files:/var/lib/mysql-files \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.20 \
--lower_case_table_names=1

mysql安装之后需要进行一些才能远程连接

进入mysql容器

docker exec -it mysql /bin/bash

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器_03

mysql -u root -p 
use mysql; 
update user set host = ‘%’ where user = ‘root’;
ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; 
select user,host,plugin from user;
flush privileges;

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_centos_04


配置成上图就可以用电脑端的navicat远程连接数据库了

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_linux_05


然后新建ry-vue数据库,把ruoyi的数据库导入

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_docker_06

redis安装

docker run -p 6379:6379 --name redis -v /home/redis/data/:/data -d redis:3.2 redis-server --appendonly yes

Nginx安装

docker run \
-d \
-p 80:80 \
--name nginx \
-v /home/nginx/conf:/etc/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/logs:/var/log/nginx \
nginx

运行完之后,发现总是会自动退出,需先创建挂载目录,然后再运行命令
先删除刚刚的镜像nginx

docker rm nginx

先在/home.nginx/conf中新建nginx.conf文件

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_linux_07


添加如下配置,注意修改成自己的服务器ip

user  root;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
     server {
        listen       80;
        server_name 120.26.196.113;		# 可以用服务器ip代替

        location / {
            root   /usr/share/nginx/html/dist/;
            index  index.html index.htm ;
            try_files $uri $uri/ /index.html;
        }
        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://120.26.196.113:8080/;		# 可以用服务器ip代替
        }
     }

    include /etc/nginx/conf.d/*.conf;
}

然后重新运行

docker run --name nginx01 -p 80:80 \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/logs:/var/log/nginx \
-d nginx

可以用 docker ps 看到nginx不会自动退出即安装成功

三、打包项目并部署

前端

修改vue.config.js 中 devServer节点映射端口,与后端端口一致,我改了ip地址

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器_08

然后运行

npm run build:prod

会在本地生成 dist 目录,将dist目录放入阿里云服务器的/home/nginx/html中

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_java_09

这时可以打开网页 阿里云ip:80 查看到前端登录页面了

后端

修改 application.yml 端口、文件上传路径

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_docker_10


若依 后端发布到docker 后 无法获取验证码 若依 docker部署_java_11

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_centos_12

修改logback.xml 日志生成路径log.path

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_linux_13

修改 MySQL、Redis地址

application-druid.yml中修改数据库连接

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器_14


运行以下命令:

mvn clean
mvn package

在 ruoyi-admin的 target下生成了一个 jar 包,那就是我们需要的

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器_15


使用的是 Dockerfile + jar 打包成镜像的部署方式(jar包上一步已生成)

创建一个Dockerfile文件

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器_16

FROM java:8

VOLUME /jiang

ADD ruoyi-admin.jar app.jar

EXPOSE 8080

ENTRYPOINT ["java","-jar","app.jar"]

在服务器中新建一个文件夹,将dockerfile文件和jar包放进去

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器_17


生成镜像

docker build -t ruoyi-vue .

运行生成的镜像即可

docker run -d -p 8080:8080 --name mxy-vue ruoyi-vue

可以看到正在运行

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_linux_18


如果正在运行的镜像中没有后端镜像,应该后端是报错了,大概率是有些端口没有改到,需要重新修改后,打成jar包,删除mxy-vue容器(docker rm mxy-vue)重新部署,可以查看日志输出查看具体报错

docker logs -f mxy-vue

成功部署截图 打开120.26.196.113:80

若依 后端发布到docker 后 无法获取验证码 若依 docker部署_服务器_19


若依 后端发布到docker 后 无法获取验证码 若依 docker部署_centos_20