赞
踩
前端的配置大多数情况不用更改,因为只要向本地发送请求,再由nginx转发到后端就行。
如果需要改变请求发送的地址,在vue.config.js
中更改地址即可
进入ruoyi-ui
文件夹,控制台输入npm run build:prod
打包好的静态页面在dist
文件夹中,把文件夹里内容全部复制到服务器
提前准备好docker,前端需要有nginx环境,后端需要redis、mysql环境,均可以用docker一键拉取安装
docker pull nginx
#这里创建三个文件夹,为挂载做准备
mkdir -p /usr/local/nginx/{conf,html,logs};
在/usr/local/nginx/
下创建一个nginx.conf
文件,文件内容为
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; include /etc/nginx/conf.d/*.conf; # 开启gzip压缩 gzip on; # 不压缩临界值,大于1K的才压缩,一般不用改 gzip_min_length 1k; # 压缩缓冲区 gzip_buffers 16 64K; # 压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_http_version 1.1; # 压缩级别,1-10,数字越大压缩的越好,时间也越长 gzip_comp_level 5; # 进行压缩的文件类型 gzip_types text/plain application/x-javascript text/css application/xml application/javascript; # 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding" gzip_vary on; # IE6对Gzip不怎么友好,不给它Gzip了 gzip_disable "MSIE [1-6]\."; }
可以看到引入了/etc/nginx/conf.d/*.conf
,所以我们后续的配置可以在刚刚创建的conf文件夹下新建一个任意名字的conf文件来配置,更好管理。
运行刚刚拉取的镜像
#这里是一句命令,全部复制即可
#如果需要更大内存,可以修改-m 200m
docker run --name nginx -m 200m -p 80:80 \
-v /usr/local/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/nginx/logs:/var/log/nginx \
-v /usr/local/nginx/html:/usr/share/nginx/html \
-v /usr/local/nginx/conf:/etc/nginx/conf.d \
-e TZ=Asia/Shanghai \
--privileged=true -d nginx
配置nginx服务器,此处用http举例:
server { listen 80; #这里决定nginx去哪找前端的页面文件 location / { #这里是容器内部的地址,直接映射到了宿主机的/usr/local/nginx/html #我这里写了绝对地址,防止报错 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_ignore_client_abort on; proxy_pass http://<后端地址>:<后端端口/; } }
输入命令docker restart nginx
,前端部署完成
用docker拉取安装mysql和redis
创建挂载文件夹,新建my.cnf放在mysql文件夹下
mkdir -p /usr/local/docker/mysql/{conf,data,log};
#my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
关键:部署到外网环境时,密码和端口映射最好修改下,映射到宿主机的端口别用默认的3306,很容易被黑客撞库攻击
#mysql安装
docker pull mysql
docker run --restart=always --privileged=true -p <这里修改下>:3306 --name mysql -v /usr/local/docker/mysql/log:/var/log/mysql -v /usr/local/docker/mysql/data:/var/lib/mysql -v /usr/local/docker/mysql/conf:/etc/mysql -v /usr/local/docker/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=<这里自己设密码> -d mysql
#redis安装 redis.conf放在redis文件夹下
#redis.conf可以从这个地址复制https://gitee.com/crushlxb/myredis/blob/master/redis.conf
#需要改密码的话找到配置文件中# requirepass foobared这一句,把 # 去掉,然后foobared改为自己的密码
docker pull redis
docker run --restart=always \
-p <同理建议修改>:6379 \
--name redis \
-v /usr/local/docker/redis/redis.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf
安装好后mysql和redis就是用自己设置的端口对外访问了,修改后端的配置文件,位于ruoyi-admin
的application-prod.yml
,需要修改mysql和redis的地址、端口、密码,redis默认没有密码,password空着就行
在文件夹中双击bin
目录的package.bat
,打包完成后文件会出现在ruoyi-admin
下的target
文件夹下。
把ruoyi-admin.jar
复制放入服务器
在同一文件夹下新建Dockerfile
文件
FROM openjdk:8
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone
ADD ruoyi-admin.jar ruoyi-admin.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","ruoyi-admin.jar"]
服务器进入这个路径,输入docker run --restart always -d -p 8080:8080 --name ruoyi ruoyi-admin.jar
运行镜像即可
为了方便更新,再新建一个ruoyi.sh
脚本文件
#!/bin/bash
docker stop ruoyi
docker rm ruoyi
docker rmi ruoyi-admin.jar
docker build -t ruoyi-admin.jar .
docker run --restart always -d -p 8080:8080 --name ruoyi ruoyi-admin.jar
echo "Docker容器已启动,名为ruoyi"
sleep 5
docker logs ruoyi
前端把服务器dist
文件夹里内容删除,替换为打包后的内容
服务器docker restart nginx
后端把ruoyi-admin.jar
删除,替换为新打包生成的ruoyi-admin.jar
服务器ruoyi.sh
运行脚本
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。