当前位置: 首页 > news >正文

若依前后端部署

目录

云服务器

工具下载

前端部署

1.创建nginx工作目录:

2.将打包后生成dist文件夹上传至刚刚创建的 /docker/nginx/data/html目录下 :

3.在/docker/nginx/data/conf 创建 nginx.conf 文件:

4.创建nginx容器并添加到网络:

后端部署

1.mysql启动:

2.redis启动:

 3.Dockerfile文件:

4.启动后端服务: 



云服务器



工具下载


通过下面链接地址下载最新版的XShell与Xftp:https://www.xshell.com/zh/free-for-home-school/https://www.xshell.com/zh/free-for-home-school/XShell可方便通过SSH连接服务器,而Xftp可通过网络给服务器上传文件。

其他的SSH连接工具: MobaXterm​,Termius,FinalShell等。


前端部署


1.创建nginx工作目录:

# 创建存放前端代码的目录
mkdir -p /docker/nginx/data/html
# 创建存放nginx.conf的目录
mkdir -p /docker/nginx/data/conf
# 创建存放log日志文件的目录
mkdir -p /docker/nginx/logs

2.将打包后生成dist文件夹上传至刚刚创建的 /docker/nginx/data/html目录下 :

3.在/docker/nginx/data/conf 创建 nginx.conf 文件:

将下面ip更改成自己购买服务器的ip地址。 

worker_processes auto;events {worker_connections 1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile      on;keepalive_timeout 65;server {listen 80;server_name 0.0.0.0; #改成服务器的ip root /usr/share/nginx/html;index index.html;# 静态文件服务及前端路由支持(history 模式)location / {try_files $uri $uri/ /index.html;}# API代理:将 /prod-api 前缀的请求转发到后端服务器location /prod-api/ {# 如果需要移除前缀,使用 rewrite 去除前缀后再转发至后端根路径rewrite ^/prod-api/(.*)$ /$1 break;proxy_pass http://ruoyi.vip:8080;  #配置后端服务的容器名proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}
}

4.创建nginx容器并添加到网络:

这里我创建了一个ruoyi网络:

docker network create ruoyi

随后运行下面命令启动容器: 

 
docker run -d --name nginx\-p 80:80 \--restart=always \-v /docker/nginx/data/conf/nginx.conf:/etc/nginx/nginx.conf \-v /docker/nginx/data/html/dist:/usr/share/nginx/html \-v /docker/nginx/logs/nginx:/var/log/nginx \--network ruoyi\-e TZ="Asia/Shanghai" \nginx:latest

参数详解:

  1. -d以“守护进程模式”(后台运行)启动容器。

  2. --name nginx将容器命名为 nginx,方便后续管理。

  3. -p 80:80

    • 端口映射,将宿主机的 80 端口映射到容器的 80 端口。
    • 访问 http://宿主机IP 即可访问 Nginx 服务。
  4. --restart=always容器意外退出时自动重启,确保服务高可用(适合生产环境)。

  5. 数据卷挂载(-v)​:

    • -v /docker/nginx/data/conf/nginx.conf:/etc/nginx/nginx.conf
      将宿主机的 Nginx 配置文件挂载到容器内,覆盖默认配置。

      • 宿主机路径:/docker/nginx/data/conf/nginx.conf
      • 容器路径:/etc/nginx/nginx.conf(Nginx 主配置文件)
      • 用途​:直接修改宿主机文件即可生效(需重启或重载 Nginx)。
    • -v /docker/nginx/data/html/dist:/usr/share/nginx/html
      将宿主机的静态文件目录挂载到容器的 Nginx 默认网站根目录。

      • 宿主机路径:/docker/nginx/data/html/dist(存放前端构建产物如 index.html
      • 容器路径:/usr/share/nginx/html
      • 用途​:更新前端文件时只需替换宿主机目录内容。
    • -v /docker/nginx/logs/nginx:/var/log/nginx
      将容器的 Nginx 日志目录挂载到宿主机

  6. --network ruoyi:

    • 将容器连接到名为 ruoyi 的 Docker 网络。
    • 用途​:如果 RuoYi 的其他服务(如后端 API)也在该网络中,Nginx 可通过容器名(如 ruoyi-app)直接访问它们,无需依赖 IP。
  7. -e TZ="Asia/Shanghai":

    • 设置容器的时区为上海(东八区)。
    • 用途​:确保容器内的时间戳与宿主机一致(影响日志时间等)。

使用docker ps 查看容器运行状态,使用docker logs -f nginx查看容器运行日志:

docker ps
docker logs -f nginx

后端部署


首先 ruoyi-boot 后端部署需要jar包,Dockerfile,配置文件,mysql,redis 等。

我在 /usr/ruoyi 目录下存放部署所需文件:

我已经在上面创建了名为 ruoyi 的 network,后端与前端需在同一 network。

1.mysql启动:

首先创建mysql的工作目录:

mkdir -p /docker/mysql/log
mkdir -p /docker/mysql/data
mkdir -p /docker/mysql/conf

启动mysql容器: 

docker run \--name mysql \-d \-p 3306:3306 \--restart=always \--network ruoyi \-v /docker/mysql/log:/var/log/mysql \-v /docker/mysql/data:/var/lib/mysql \-v /docker/mysql/conf:/etc/mysql/conf.d \-v /etc/localtime:/etc/localtime:ro \-e MYSQL_ROOT_PASSWORD=1234 \mysql:latest

-d 后台运行

–name 容器名

-v 数据卷

-p 端口映射

–network 网络指定

-e 环境配置,这里指定了root用户的密码


MYSQL_ROOT_PASSWORD=1234,是设置mysql的密码,请修改成复杂度高的密码。

--restart=always,当容器因任何原因停止时,Docker 会自动重新启动该容器。

2.redis启动:

首先创建redis的工作目录:

mkdir -p /docker/redis/conf
mkdir -p /docker/redis/data
mkdir -p /docker/redis/logs

然后配置redis配置文件:

在/docker/redis/conf目录下创建redis.conf:

#端口号
port 6379#配置密码,不要可以删掉
requirepass  1234#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /docker/redis/run/redis6379.pid#默认为no,redis持久化,可以改为yes
appendonly yes#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000# 按需求调整 Redis 线程数
tcp-backlog 511# 设置数据库数量,这里设置为16个数据库
databases 16# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128# 是否记录系统日志,默认为yes
syslog-enabled yes#指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice# 日志输出文件,默认为stdout,也可以指定文件路径
logfile stdout# 日志文件
#logfile /logs/redis.log

 启动redis容器:

docker run --name redis \
-p 6379:6379 \
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /docker/redis/data:/data \
-v /docker/redis/logs:/logs \
--network ruoyi \
-d --restart=always redis:latest redis-server /etc/redis/redis.conf

如果需要远程连接阿里云服务器的mysql、redis。需要去阿里云的防火墙把3306,6379放出来才能访问。不使用就禁用否则不安全。

 3.Dockerfile文件:

# 基础镜像
FROM eclipse-temurin:8
# 作者
MAINTAINER eleven
# 工作目录
WORKDIR /usr/ruoyi
# 同步docker内部的时间
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 设置时区
ENV TZ=Asia/Shanghai
EXPOSE 8080
# 复制jar包到/user/ruoyi下
ARG JAR_FILE
ADD ${JAR_FILE} ./ruoyi-admin.jarENTRYPOINT ["nohup","java","-Dspring.profiles.active=druid","-Dspring.config.location=/usr/ruoyi/application.yml,/usr/ruoyi/application-druid.yml","-jar","/usr/ruoyi/ruoyi-admin.jar",">","/usr/ruoyi/ruoyi-admin.log","&>","&"]

这么配置是为了一但我需要更改配置文件,仅需更改上传的这两个配置文件而无需重新打包。 

4.启动后端服务: 

在/usr/ruoyi下使用命令将jar包构建成镜像: 

docker build -t ruoyi-boot:1 .

随后运行容器: 

docker run -d \--name ruoyi \--network ruoyi \-v /usr/ruoyi:/usr/ruoyi \-v /var/log/ruoyi:/var/log/ruoyi \-p 8080:8080 \-e JAVA_OPTS="-Xms1g -Xmx2g" \--restart=unless-stopped \ruoyi-boot:1 \java -jar /usr/ruoyi/ruoyi-admin.jar

查看日志:

docker logs -f --tail 100 ruoyi

 注意!!!前后端需在同一network中。

http://www.dtcms.com/a/290121.html

相关文章:

  • Linux进程核心机制:状态、优先级与上下文切换详解
  • 基于Python flask的电影数据分析及可视化系统的设计与实现,可视化内容很丰富
  • 信息整合注意力IIA,通过双方向注意力机制重构空间位置信息,动态增强目标关键特征并抑制噪声
  • 文本数据分析
  • 数据分析的尽头是什么?是洞察,而非数字!
  • Car Kit重构车机开发体验,让车载应用开发驶入快车道
  • 分布式定时任务系列13:死循环是任务触发的银弹?
  • Mac上安装Claude Code的步骤
  • Python Locust库详解:从入门到分布式压力测试实战
  • 【web自动化】-5- fixture集中管理和项目重构
  • 2025最新版PyCharm for Mac统一版安装使用指南
  • Q10900H6迷你电脑:集成双10G+四2.5G网口,支持多系统网络部署
  • Python高效入门指南
  • 详解 @property 装饰器与模型数据类型检测
  • 7-Zip 曝出两个可导致拒绝服务的中危漏洞
  • Sklearn 机器学习 IRIS数据 理解分类报告
  • 使用八爪鱼爬虫抓取汽车网站数据,分析舆情数据
  • MySQL 事务详解:从基础原理到实战应用
  • MySQL配置性能优化赛
  • 第三章自定义检视面板_创建自定义编辑器类_编扩展默认组件的显示面板(本章进度3/9)
  • JQuery Easyui引入easyui-lang-zh_CN.js后出现乱码的问题解决方法
  • ruoyi-flowable-plus Excel 导入数据 Demo
  • 微软CEO Satya Nadella提出AI重构法则:从范式跃迁到社会盈余
  • DeepSeek vs ChatGPT:谁更胜一筹?
  • 添加状态信息
  • AI+Python | 长时序植被遥感:动态·物候·变异归因·RSEI生态评估全流程[特殊字符]
  • 【Unity优化】Unity多场景加载优化与资源释放完整指南:解决Additive加载卡顿、预热、卸载与内存释放问题
  • Taro 路由相关 API 详解与实战
  • 深入解析IP协议:组成、地址管理与路由选择
  • XSS学习总结