此篇文章记录若依前后端分离版本的部署,注意:你需要确保你本地的mysql有对应的数据库并且有redis服务和npm run dev没有任何问题。


1.win10部署

官网:http://doc.ruoyi.vip/ruoyi-vue/document/hjbs.html#nginx%E9%85%8D%E7%BD%AE

1.1.后端jar包部署

首先注意对应的application.yml文件,这里是8090

windows 若依微服务怎么导入docker镜像 若依 docker部署_docker

使用Idea的maven直接打包,clean,package

windows 若依微服务怎么导入docker镜像 若依 docker部署_java_02

打包完成后进入ruoyi-admin的target目录,以cmd模式进入上述目录,执行命令

java -jar ruoyi-admin.jar,出现以下界面即为运行成功!!!

windows 若依微服务怎么导入docker镜像 若依 docker部署_java_03

windows 若依微服务怎么导入docker镜像 若依 docker部署_linux_04

1.2.前端nginx部署

首先查看vue.config.js文件的内容,target的地址对应的是后端的地址,port端口是打包好后访问的端口,也就是nginx代理的端口,默认是80,这里将其修改为70是为了防止80端口被占用等情况。

windows 若依微服务怎么导入docker镜像 若依 docker部署_mysql_05

进入ruoyi-ui目录,注意以管理员模式开启cmd,执行命令npm run build:prod,按照官网的说法这是打包正式环境执行的语句,打包成功后dist目录就有如下内容。

windows 若依微服务怎么导入docker镜像 若依 docker部署_docker_06

下载按照nginx:nginx:下载

编辑nginx.conf文件

windows 若依微服务怎么导入docker镜像 若依 docker部署_jar_07

经过上面配置只要是经过:http://192.168.3.244:70/prod-api 发送的请求都会被动态代理到 http://localhost:8090

启动nginx,访问 http://192.168.3.244:70,出现登录页面即为登陆成功

windows 若依微服务怎么导入docker镜像 若依 docker部署_mysql_08

如果登录失败检查端口是否开放

控制面板-防火墙-高级设置-入站规则-新建规则-端口,添加70,默认下一步起个名称

2.CentOS7使用Docker部署

注意:你准备的CentOS7的环境必须先能ping通网络,不然下面的步骤都做不了!

2.1.安装Docker

卸载(可选)

如果以前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce
安装yum工具
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
更新本地镜像源
# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令安装docker-ce社区免费版

yum install -y docker-ce
启动Docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

# 启动docker服务
systemctl start docker  
# 停止docker服务
systemctl stop docker  
# 重启docker服务
systemctl restart docker

输入命令 docker -v 可以查看docker版本,如下图所示:

windows 若依微服务怎么导入docker镜像 若依 docker部署_docker_09

2.2.配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

windows 若依微服务怎么导入docker镜像 若依 docker部署_java_10

2.3.使用Docker安装mysql8

  1. 拉取mysql镜像,默认是最高版本,这里指定为8.0.26
docker pull mysql:8.0.26
  1. 在宿主机上创建对应的文件夹来对其进行挂载,易于管理Mysql配置文件,(当前操作是在根目录/home下),创建mysql目录并进入创建conf,data两个目录。
mkdir -p mysql && cd $_ && mkdir {conf,data}
  1. conf目录下创建my.cnf文件
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
 
[mysqld]
 
pid-file = /var/run/mysqld/mysqld.pid
 
socket = /var/run/mysqld/mysqld.sock
 
datadir = /var/lib/mysql
 
secure-file-priv= NULL
 
# Disabling symbolic-links is recommended to prevent assorted security risks
 
symbolic-links=0
 
# Custom config should go here
 
!includedir /etc/mysql/conf.d/
 
max_connections=1000
wait_timeout=120
interactive_timeout=300
 
lower_case_table_names=1
  1. 创建MySQL容器
docker run \
--restart=unless-stopped \
--name mysql \
-e MYSQL_ROOT_PASSWORD=root \
-p 3306:3306 \
-v /home/mysql/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /home/mysql/data:/var/lib/mysql \
-d \    
mysql:8.0.26
  1. 进入mysql容器修改加密规则防止远程访问报错
# 进入mysql容器
docker exec -it mysql bash
# 登录mysql,输入密码root,前面 -e参数设置的就是密码
mysql -uroot -p

use mysql

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

FLUSH PRIVILEGES;

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
  1. 至此就可以进行远程连接了,使用navicat进行远程连接,导入对应的数据库

windows 若依微服务怎么导入docker镜像 若依 docker部署_jar_11

2.4.使用Docker安装redis

# 拉取redis镜像
docker pull redis
# 创建并运行redis的持久化容器
docker run --name mr -p 6379:6379 -d redis redis-server --save 60 1 --loglevel warning
# 进入redis容器
docker exec -it mr redis-cli
#ping-->pong即为安装成功

2.5.使用Docker安装nginx

  1. 拉取nginx镜像
# 拉取nginx镜像
docker pull nginx
  1. 创建本地文件夹与nginx容器做挂载
mkdir -p /mydata/nginx

mkdir conf html log

conf文件夹下创建 nginx.conf文件,编辑内容如下:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       70;
        server_name  172.16.7.102 # 你的IP地址
		charset utf-8;

	location / {
		root  /usr/share/nginx/html/dist;
		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://172.16.7.102:8090/; # 你的IP地址
		}

        error_page   500 502 503 504  /50x.html;
        	location = /50x.html {
           	root   html;
        }
    }
	include /etc/nginx/conf.d/*.conf;
}

注意:上面的 listen 70; 对应的是前端配置暴露的端口号,proxy_pass http://172.16.7.102:8090/;对应的是后端的application.yml配置的端口号

将前端打包好的dist文件夹上传到 /mydata/nginx/html 目录下,对其进行挂载并且运行nginx容器:

docker run -d -p 70:70 --name rynginx \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/log:/var/log/nginx \
nginx

2.6.使用Dockerfile创建镜像

  1. /mydata文件夹下创建一个文件夹docker,将后端打包好的jar包和Dockerfile文件拷贝到该目录下,Dockerfile的文件内容如下:
FROM java:8
VOLUME /tmp
ADD *.jar /app.jar
EXPOSE 8090

RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
  1. /mydata/docker 文件夹下构建镜像
# 注意后面有一个.
docker build -t ruoyi-admin .
  1. 使用自己的镜像启动容器
docker run -d -p 8090:8090 --name ruoyi ruoyi-admin
  1. 通过 ip地址:70访问,出行登录界面即为成功

windows 若依微服务怎么导入docker镜像 若依 docker部署_java_12