Docker部署RuoYi-Vue前后端分离项目

项目部署

Docker中更新vim 

apt-get update
apt-get install vim  docker

1:镜像下载与服务配置

1.1:Mysql

docker pull mysql

镜像下载启动:

docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=luohai --name mysql mysql

1.2:Nginx

镜像下载

docker pull nginx

将事先准备好的nginx.conf放在指定的目录下

/home/nginx/conf/nginx.conf

镜像启动

docker run -d --name nginx -p 80:80 -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ruoyi/ruoyi-ui/:/home/ruoyi/ruoyi-ui nginx

1.3:redis

镜像下载

docker pull redis

镜像启动
docker run -d --name redis -p 6379:6379 redis

1.4:设置防火墙开放端口

1:查看防火墙状态:
systemctl status firewalld
2:查看打开的端口 
firewall-cmd --zone=public --list-ports 
3:添加新的开放端口,并重启,查看
firewall-cmd --zone=public --add-port=80/tcp --permanent    
(--permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload
4:删除端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent

2:web项目打包

2.1:修改url

直接修改配置文件的VUE_APP_BASE_API即可

2.2:打包

npm run build:prod

3:后端项目打包

3.1:修改配置信息

修改文件路径

修改redis地址

修改mysql数据库连接

3.2:后端打包

mvn clean package -Dmaven.test.skip=true

进入容器内部启动jar:
nohup java -jar -Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m ruoyi-admin.jar >> ruoyi-admin.log 2>&1

4:附件:

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       80;
        server_name  localhost;
        charset utf-8;

        location / {
            root   /home/ruoyi/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://192.168.64.130:8080/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Nginx做负载均衡

 基础命令安装

yum -y install lrzsz epel-release net-tools bash-completion unar zip unzip wget vim gcc-c++ tcl-devel -y

安装pcre nginx需要这个组件

yum -y install gcc gcc-c++ autoconf automake zlib zlib-devel openssl openssl-devel pcre pcre-devel

下载nginx

wget http://nginx.org/download/nginx-1.24.0.tar.gz  

解压

tar -xf nginx-1.24.0.tar.gz  

安装nginx  负载均衡依赖--with-stream模块

./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-stream --with-http_ssl_module   

 编译安装

make && make install

修改配置文件

http同级目录下加
upstream backend {            #定义集群,backend是集群名称,可自行定义
        server 221.236.26.77:58099 weight=2;  #集群组是两台服务器组成
        server 221.236.26.78:58099 weight=4;   权重
              }

定义一个server   使本机访问8080的请求负载均衡到221.236.26.77:58099和221.236.26.78:58099 2台服务器的两个端口上

server {
        listen       8080;
        server_name  localhost;
        location / {
                proxy_pass http://backend;  #对应upstream backend 集群名称

        }
            }
保存后重新加载nginx配置
sbin/nginx -t      检测配置文件
sbin/nginx -s reload     重新加载

重定向

server {
    listen 80;
    
    #填写绑定证书的域名
    server_name www.xxx.com;
    
    #(第一种)把http的域名请求转成https
    return 301 https://$host$request_uri;
    
    #(第二种)强制将http的URL重写成https
    rewrite ^(.*) https://$server_name$1 permanent; 
}

$host和$request_uri是值用户访问域名的地址

编写启动脚本step.sh,如下:

#!/bin/bash  
#这里可替换为你自己的执行程序,其他代码无需更改  
APP_NAME=cqxcx-api-3.3.2.0-SNAPSHOT.jar
if [ x"$JAVA_MEM_OPTS" == x ];then
    JAVA_MEM_OPTS="-server -Xms512m -Xmx512m -Xmn128m -Xss256k"
fi
#使用说明,用来提示输入参数  
usage() {  
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"  
    exit 1  
}  

#检查程序是否在运行  
is_exist(){  
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `  
  #如果不存在返回1,存在返回0       
  if [ -z "${pid}" ]; then  
   return 1  
  else  
    return 0  
  fi  
}  

#启动方法  
start(){  
  is_exist  
  if [ $? -eq "0" ]; then  
    echo "${APP_NAME} is already running. pid=${pid} ."  
  else  
    nohup java -jar $APP_NAME  --spring.profiles.active=dev --server.port=8080 $JAVA_MEM_OPTS  > ./$(date +%Y-%m-%d) 2>&1 &  

    echo "${APP_NAME} started"
  fi  
}  

#停止方法  
stop(){  
  is_exist  
  if [ $? -eq "0" ]; then  
    kill -9 $pid  
    echo "${APP_NAME} stoped"
  else  
    echo "${APP_NAME} is not running"  
  fi    
}  

#输出运行状态  
status(){  
  is_exist  
  if [ $? -eq "0" ]; then  
    echo "${APP_NAME} is running. Pid is ${pid}"  
  else  
    echo "${APP_NAME} is NOT running."  
  fi  
}  

#重启  
restart(){  
  stop  
  start  
}  

#根据输入参数,选择执行对应方法,不输入则执行使用说明  
case "$1" in  
  "start")  
    start  
    ;;  
  "stop")  
    stop  
    ;;  
  "status")  
    status  
    ;;  
  "restart")  
    restart  
    ;;  
  *)  
    usage  
    ;;  
esac
 

RuoYi-Vue-Plus是一个基于Vue.js和Spring Boot的后台管理系统框架。要在服务器上通过Docker部署它,你需要按照以下步骤操作: 1. **获取镜像**: - 首先,确保你已经安装了DockerDocker Compose。然后去RuoYi-Vue-Plus的GitHub仓库下载最新版本的Dockerfile或寻找官方提供的Docker部署指南。 2. **创建Dockerfile**: - 如果项目本身没有提供Dockerfile,你可以创建一个,通常包含基础镜像的选择、环境变量设置、依赖包安装以及启动应用的命令。 ```yaml # Dockerfile内容示例 FROM node:14-alpine as build WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build FROM nginx:latest COPY --from=build /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] ``` 3. **编写docker-compose.yml**: - 使用`docker-compose`来管理容器和服务间的关联,包括数据库、应用服务等。这里假设有一个Nginx做反向代理,应用服务运行在另一个容器内。 ```yaml version: '3' services: db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: your_root_password MYSQL_DATABASE: your_db_name MYSQL_USER: your_username MYSQL_PASSWORD: your_password ruoyi: build: . ports: - db ``` 4. **构建并运行**: - 在项目的根目录下运行 `docker-compose up -d` 命令, `-d` 表示在后台运行并 detached 模式。 5. **配置**: - 根据需要,在docker-compose.yml中对环境变量、网络、卷等进行配置,确保数据持久化和正确的服务连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值