若依前后端分离项目部署(使用docker)

server/2025/1/22 10:39:56/

文章目录

  • 一、搭建后端
    • 1.1 搭建流程:
    • 1.2 后端零件:
      • 1.2.1 mysql容器创建:
      • 1.2.2 redis容器创建:
      • 1.2.3 Dockerfile内容:
      • 1.2.4 构建项目镜像:
      • 1.2.5 创建后端容器
  • 二、前端搭建:
    • 2.1 搭建流程:
    • 2.2 前端零件:
      • 2.2.1 nginx 容器创建:
      • 2.2.2 nginx.conf 文件:
      • 2.2.3 nginx html 数据卷所在位置:
      • 2.2.4 nginx conf 数据卷所在位置:
  • 三、总结
    • 3.1 后端:
    • 3.2 前端:

由于之前做若依的二次开发项目,项目完成之后想部署到云服务器,折腾了好久才部署成功,所以总结下来,希望能帮到大家。

这里是使用docker进行部署的,如果想用别的方式部署,就需要友友网上再找找了。

这里做个规定:下面说到使用零件的意思就是使用下面我给出的资料,在对应资料有说明,友友要记得看,修改成自己的项目情况。

一、搭建后端

1.1 搭建流程:

  1. 首先需要把后端项目需要的程序先搭建好,如 mysql,redis(使用零件)

  2. 创建网桥(推荐根据项目命名),把mysql,redis和nginx(后面前端布置,现在先不用)放在一起

  3. 打包后端项目(后端项目的mysql和redis对应配置文件记得修改,如果放在一个网桥里面,可以使用网桥名称 )。

image-20241223094433308

  1. 在云服务器里面单独开一个文件夹(推荐使用项目相关名称命名),把后端项目上传到文件夹里面.(优点:便于管理)

  2. 在文件夹里面创建Dockerfile文件,填入对应零件内容(使用零件)

image-20241223090605902

  1. 构建镜像(使用零件)

  2. 创建后端容器(使用零件)

1.2 后端零件:

1.2.1 mysql容器创建:

这里设置的mysql密码为123,有需要的友友自己修改一下。

docker">docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \-e MYSQL_ROOT_PASSWORD=123 \  -v ./mysql/data:/var/lib/mysql \-v ./mysql/conf:/etc/mysql/conf.d \-v ./mysql/init:/docker-entrypoint-initdb.d \mysql

1.2.2 redis容器创建:

这里设置的redis密码为123456,有需要的友友自己修改一下。

docker">docker run -d \--name redis \-p 6379:6379 \-e REDIS_PASSWORD=123456 \redis:latest \

1.2.3 Dockerfile内容:

openjdk 是jdk的版本,这里使用的是jdk11,如果想使用其它版本可以自己改,一般直接用11也是可以的。

这里需要修改的就是xxx部分,修改成自己后端项目的名称,其它的不用改。

docker"># 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY xxxxx.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

1.2.4 构建项目镜像:

注意:构建镜像需要看完下面的解释之后再进行操作,一定一定。

docker build -t 镜像名称 .
  1. . 表示Dockerfile文件路径就在当前路径。例如下图:自己在 root/dkd 中,Dockerfile 文件也在 root/dkd 中就可以使用.

  2. 镜像名称无所谓,最好其和项目有关的。

  3. 后端项目需要放在和Dockerfile相同的文件夹里面。

  4. 基本和下图一样(项目名称不一样),除了 mysql,mysql 不需要创建在哪里(那里是错误的),mysql的数据我们使用客户端工具连上自己加。

image-20241217161210265

1.2.5 创建后端容器

docker">docker run -d \--name 容器名(自己指定) \-p 8080:8080 \--network 网桥名 \镜像名(前面构建的)

二、前端搭建:

2.1 搭建流程:

  1. nginx 容器创建(使用零件),记得放到网桥里面。
  2. 打包前端项目,生成 dist 文件(前端项目所在位置)。

下图为如何打包

image-20241217154852338

下图为 dist 所在文件夹(在项目文件夹里面):

image-20241217165805588
  1. 把 dist 里面的所有内容拷贝到/var/lib/docker/volumes/html/_data 目录里面
image-20241217170127979
  1. 修改/var/lib/docker/volumes/conf/_data/ 文件夹里面的 nginx.conf 文件(直接贴零件,稍加修改)。
image-20241217170247293
  1. 最后不要忘记要重启 nginx 容器刷新配置。

2.2 前端零件:

不一定都会用到。

2.2.1 nginx 容器创建:

一般不用改。

docker">docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html -v conf:/etc/nginx nginx

2.2.2 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;server {listen       80;server_name  159.75.xxx.145(记得切换);location / {root   /usr/share/nginx/html;index  index.html index.htm;try_files $uri $uri/ /index.html; #防止刷新报404# try_files $uri $uri/ /index.html;}# location /prod-api/{#     proxy_set_header Host $http_host;ls#     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://159.75.xxx.145:8080/;# }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://dkd-project(记得切换):8080/;}		location /dev-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://dkd-project(记得切换):8080/;}}include /etc/nginx/conf.d/*.conf;}

2.2.3 nginx html 数据卷所在位置:

docker">/var/lib/docker/volumes/html/_data

2.2.4 nginx conf 数据卷所在位置:

docker">/var/lib/docker/volumes/conf/_data/

三、总结

3.1 后端:

最好要把后端项目分成开发和上线两个部分(打包的时候记得切换到上线部分)。

只要把mysql(数据要有)和redis先搭建好,后端自己制作镜像创建容器即可,注意点就是,项目访问mysql和redis是通过网桥来访问的,好处可以少开放一点端口,加快访问速度。

后端构建镜像需要Dockerfile文件。

3.2 前端:

首先创建nginx容器(要把conf和html文件,挂载出来)。

前端项目基本不用动。

把dist里面的文件放入html/_data里面。

配置conf文件。

最后要把nginx放到网桥里面。

结语:
其实写博客不仅仅是为了教大家,同时这也有利于我巩固知识点,和做一个学习的总结,由于作者水平有限,对文章有任何问题还请指出,非常感谢。如果大家有所收获的话,还请不要吝啬你们的点赞收藏和关注,这可以激励我写出更加优秀的文章。

在这里插入图片描述


http://www.ppmy.cn/server/160429.html

相关文章

《多模态语言模型的局限性与生态系统发展现状分析》

1. 多模态语言模型的主要局限性 推理能力问题 复杂推理任务表现不稳定图像理解深度差异大推理过程存在逻辑跳跃 技术实现挑战 视觉特征与语言理解的融合不完善训练数据和方法有限跨模态理解算法需优化 2. 生态系统的不成熟表现 评测标准问题 缺乏标准化评测框架性能评估方法…

Scade 表达式 - 使用索引的迭代器

Scade 表达式中的 map, fold, mapfold,会对输入数组参数中的元素逐个作处理,不需要数组元素的索引信息。若在处理数组元素时,需要数组元素相应的索引信息,则可使用迭代器算子 mapi, foldi, mapfoldi。 mapi 算子 mapi 算子的行为…

T-SQL语言的数据库编程

T-SQL语言的数据库编程 1. 引言 在信息化迅速发展的今天,数据库已经成为数据管理和使用的重要工具。其中,T-SQL(Transact-SQL)作为微软SQL Server的扩展SQL语言,不仅用于数据查询和管理,还能够进行复杂的…

电脑未能成功安装设备驱动程序怎么办 几种有效修复方法

当电脑未能成功安装设备驱动程序时,可以尝试以下几种有效修复方法: 一、检查设备连接与兼容性 重新插拔设备:确保设备已正确且牢固地插入电脑的接口中。如果是USB设备,可以尝试插到主机背部的接口,以确保供电稳定。更…

【JVM】总结篇之GC性能优化案例

文章目录 性能优化案例1:调整堆大小提高服务的吞吐量初始配置优化配置 性能优化案例2:JVM优化之JIT优化即时编译对代码的优化逃逸分析编译器优化栈上分配同步省略标量替换 性能优化案例3:合理配置堆内存推荐配置如何计算老年代存活对象结论你…

# [Unity]【游戏开发】 脚本生命周期与常见事件方法

在Unity中,脚本的生命周期是指脚本从创建到销毁的整个过程,以及在此过程中触发的各类事件。掌握脚本生命周期对优化游戏开发过程和避免性能问题至关重要。本文将详细探讨脚本生命周期的关键事件、常见的事件方法,并通过实例说明如何在合适的时机执行脚本逻辑,以确保游戏的流…

软件测试丨消息管道(Kafka)测试体系

Kafka 作为一个分布式流处理平台,通过其强大的消息管道功能,实现高吞吐量、低延迟的数据流动。为了确保 Kafka 在复杂系统中的可靠性,建立健全的测试体系显得尤为重要。在本文中,我们将深入探讨 Kafka 的测试体系,包括…

MongoDB vs Redis:相似与区别

前言 在当今的数据库领域,MongoDB 和 Redis 都是备受关注的非关系型数据库(NoSQL),它们各自具有独特的优势和适用场景。本文将深入探讨 MongoDB 和 Redis 的特点,并详细对比它们之间的相似之处和区别,帮助…