手把手教你Docker+nginx部署Springboot+vue前后端分离项目

Docker+Nginx部署SpringBoot+Vue前后端分离项目 安装docker 卸载旧的版本 yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-log.. 阅读详情
小Hub领读:

B站视频又更新啦,一键三连加关注,走起走起!

前后端分离项目如何部署?看看这篇文章,马上就懂了哈,还有配套视频讲解,嘻嘻,记得一键三连!

配套视频:https://www.bilibili.com/video/BV17A411E7aE/


项目回顾

之前我录制过一个视频,现在也已经8万多播放量了呀,哈哈,感谢大家的认可,大家可以关注我的B站,名称叫MarkerHub,公众号同名。

其实我觉得我已经录制得很详细的了,可能大家水平不一,有些人觉得我很多地方讲清楚,还有就是有些人按照视频同步做实验,还一路踩坑,这个我也预料不到哈哈。说实话,我自己做实验的过程还是挺顺利的。

有些同学们提出个问题,不知道如何打包部署Vue前后端分离项目。那么今天,我们就来学习一下,如何部署简单快捷部署我们的vueblog项目!

这里给出vueblog项目的视频地址:

名称:[实战]基于SpringBoot+Vue开发的前后端分离博客项目完整教学(vueblog)

视频:https://www.bilibili.com/video/BV1PQ4y1P7hZ/

文档:https://juejin.im/post/6844903823966732302

线上演示:http://www.markerhub.com:8084/blogs

配套部署视频

  • 视频:https://www.bilibili.com/video/BV17A411E7aE/

  • 文档:https://juejin.im/post/6886061338804617229/

工具

  • xshell 6 绿色破解版:关注公众号:JavaCat,回复xshell获取

  • Navicat 11 简体中文版:关注公众号:JavaCat,回复navicat获取

上线前准备

这里我们同步演示怎么部署到win环境和linux(centos7)系统中,前端服务器采用nginx部署,并使用docker统一管理前后端服务器。

所以我们会用到:

  • nginx

  • docker compose

希望你看视频前有点基础哈,当然了,这次部署比较简单,不需要很精通,一般看了我的视频应该都能部署成功的哈。

话不多说,直接上手!别忘了给我一个一键三联哈,顺便关注我B站,感谢!

1、win环境

win环境我就用本机来演示了,我们需要分别打包前后端,前后端打包都是一条命令即可,只不过我们打包之前注意需要配置好线上的环境参数等。

1.1、前端

先来配置一下后端的调用路径,因为现在部署在本地localhost,所以在axios.js中,我们配置好链接,因为等下后端部署也是本机,所以我这里直接这样配置就好了,如下:

  • src\axios.js

axios.defaults.baseURL = "http://localhost:8081"

上面配置的就是前端访问后端接口的服务。然后前端部署还需要考虑一个问题:打包之后项目资源引用路径,比如我们打包后链接是否需要带项目名称等。按照Vue官方的部署说明,我们添加一个vue.config.js文件,

  • vueblog-vue/vue.config.js

module.exports = {
  publicPath: '/'
}

当然了,publicPath默认其实是空的,也就是publicPath: '',两个效果貌似其实是一样的,哈哈哈,我只是提醒一下有这回事而已,嘿嘿。设置完毕之后,我们执行打包命令:

# 打包命令
npm run build

命令执行之后,我们在项目根目录下就可以找到一个dist的目录,这个就是打包之后的文件夹,里面有个index.html,但是我们点击直接打开是看不到任何内容的,这时候,我们需要部署到nginx中。 

首先我们下载一个nginx,下载地址:http://nginx.org/en/download.html,这里我们下载nginx/Windows-1.18.0版本,下载之后解压zip。根据我们对nginx的熟悉,静态文件我们放在html文件夹下面,所以先把html文件夹中的index.html和50x.html删掉,然后把打包出来的dist文件夹内的所有文件都复制到nginx的html中,如图:

双击nginx.exe启动nginx,然后浏览器输入http://localhost,出现了我们熟悉的界面,虽然没有博客数据,链接也自动跳转到了http://localhost/blogs,

我们点击任意一个链接或者按钮或者刷新界面,这时候出现了404:

刷新之后nginx就找不到路由了,这是为啥,得和你们科普一下,vue项目的入口是index.html文件,nginx路由的时候都必须要先经过这个文件,所以我们得给nginx定义一下规则,让它匹配不到资源路径的时候,先去读取index.html,然后再路由。所以我们配置一下nginx.conf文件。具体操作就是找到location /,添加上一行代码try_files $uri $uri/ /index.html last;如下:

  • nginx-1.18.0/conf/nginx.conf

location / {
    root   html;
    try_files $uri $uri/ /index.html last;
    index  index.html index.htm;
}

这一行代码是什么意思呢?try_files的语法规则:格式1:try_files file ... uri,表示按指定的file顺序查找存在的文件,并使用第一个找到的文件进行请求处理,last表示匹配不到就内部直接匹配最后一个。

重启nginx之后,链接再刷新都正常啦。但是没有数据,所以我们去部署一下后端。windows环境nginx的重启我一般都是打开任务管理器直接干掉nginx进程,然后再重新双击的~~

1.2、后端

后端的打包就简单多了,应该大家都挺熟悉的,注意配置redis、mysql的链接密码啥的,然后执行命令,本机测试,redis和mysql我都已经提前安装好的了,sql文件也在vueblog-java的resources目录下。

对了,pom.xml文件里面,spring-boot-maven-plugin之前注释掉了,现在一定要打开。不然执行jar会找不到主类。

  • pom.xml

执行打包命令:

# 跳过测试打包
mvn clean package -Dmaven.test.skip=true

得到target下的vueblog-0.0.1-SNAPSHOT.jar,然后再执行命令

java -jar vueblog-0.0.1-SNAPSHOT.jar --spring.profiles.active=default

后端上线之后,我们再访问下前端,发现已经可以正常浏览网页啦!spring.profiles.active表示指定环境配置文件。 

2、linux环境

linux环境部署相对复杂一点,因为我们还要部署redis、mysql等。之前我发布过一个视频,是部署传统的博客项目eblog,采用的是docker容器,但是我们没有docker compose进行编排,这次我们使用docker compose来编排我们的服务,一起性搞定部署。

二话不说,我们先来安装一下docker和docker compose,对于docker知识还不是特别懂的同学,建议自行去补习补习哈。

2.1、安装docker
#安装
yum install docker
#检验安装是否成功
[root@localhost opt]# docker --version
Docker version 1.13.1, build 7f2769b/1.13.1
#启动
systemctl start docker
2.2、安装docker compose

可以参考:https://docs.docker.com/compose/install/

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#
sudo chmod +x /usr/local/bin/docker-compose
# 检查是否安装成功
docker-compose --version
2.3、编写Dockerfile文件

因为我们的项目需要成为docker的镜像,所以我们必须先编写Dockerfile文件构建我们的项目镜像然后进行编排,Dockerfile文件可以帮我们进行构建。

  • Dockerfile

FROM java:8
EXPOSE 8080
ADD vueblog-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.profiles.active=pro"]

上面几行命令其实很简单,首先依赖jdk8环境,对外暴露8080,然后就是复制vueblog-0.0.1-SNAPSHOT.jar到docker容器中并命名为app.jar,最后是执行命令java -jar /app.jar --spring.profiles.active=pro,使用的是我们另外编写的一个线上环境配置。

  • application-pro.yml

# DataSource Config
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/vueblog?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: root
    password: admin
shiro-redis:
  enabled: true
  redis-manager:
    host: 127.0.0.1:6379

等会儿我们需要修改application-pro.yml的redis和mysql链接等信息的一些配置,需要注意。

2.4、编写docker-compose.yml文件

我们需要用到的软件与服务分别有nginx、mysql、redis、还有我们的springboot项目,所以编写如下:

  • docker-compose.yml

version: "3"
services:
  nginx: # 服务名称,用户自定义
    image: nginx:latest  # 镜像版本
    ports:
    - 80:80  # 暴露端口
    volumes: # 挂载
    - /root/nginx/html:/usr/share/nginx/html
    - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true # 这个必须要,解决nginx的文件调用的权限问题
  mysql:
    image: mysql:5.7.27
    ports:
    - 3306:3306
    environment: # 指定用户root的密码
      - MYSQL_ROOT_PASSWORD=admin
  redis:
    image: redis:latest
  vueblog:
    image: vueblog:latest
    build: . # 表示以当前目录下的Dockerfile开始构建镜像
    ports:
    - 8081:8081
    depends_on: # 依赖与mysql、redis,其实可以不填,默认已经表示可以
      - mysql
      - redis

上面的意思,我都用注释解释一遍了,希望可以讲清楚!需要注意的是,nginx中我们对nginx的放置静态资源的html文件夹和配置文件nginx.conf进行了一个挂载,所以我们打包后的文件放置到宿主机**/root/nginx/html**文件目录就行了哈

2.5、修改application-pro.yml

然后我们再回头看看application-pro.yml文件,mysql和redis的链接之前还是localhost,现在我们需要修改成容器之间的调用,如何知道mysql和redis的链接地址呢?docker compose就帮我们解决了这个问题,我们可以使用镜像容器的服务名称来表示链接。比如docker-compose.yml中mysql的服务名称就叫mysql、redis就叫redis。

所以我们最终得到的配置文件如下:

2.6、准备好nginx的挂载目录和配置

docker-compose.yml中已经提到,

  • 宿主机的挂载目录:/root/nginx/html

  • 挂载配置:/root/nginx/nginx.conf

所以我们在root目录下新建nginx目录,并进入nginx目录下新建html目录和一个nginx.conf配置文件。

然后对nginx.conf进行编写,具体配置如下:

  • nginx.conf

#user  root;
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;
        location / {
            root   /usr/share/nginx/html;
			try_files $uri $uri/ /index.html last; # 别忘了这个哈
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
2.7、上传前端

前端打包之后先修改前端调用后端的接口,因为我是虚拟机,所以配置如下:

  • axios.js

axios.defaults.baseURL = "http://192.168.0.117:8081"

然后npm run build打包得到dist文件夹,并把dist压缩成dist.zip上传到linux之后解压到**/root/nginx/html**目录下。如下图: 

2.8、部署后端

一切准备就绪之后,我们就开始编排部署了哈。

首先本地打包vueblog项目,vueblog-0.0.1-SNAPSHOT.jar,并上传到linux中,同时docker-compose.yml、Dockerfile也上传到同一目录下。如图所示:

然后我们执行一下编排命令:

# 开始编排
cd ~
docker-compose up -d

其中-d表示后台服务形式启动 

然后我们稍等片刻,特别是开始Building vueblog的时候可能时间有点长,耐心等待即可!

最后提示如下:

说明我们已经成功编排啦。

nginx是80端口,所以我们直接输入ip地址,如下可以看到一个界面然后有弹窗:

这个简单,是因为我们的数据库还没创建哈。接下来我们去手动创建一下数据库并导入sql文件。

  • vueblog-java/src/main/resources/vueblog.sql

然后再刷新一下浏览器链接,数据就出来啦,搞定,轻松!

3、结束语

好啦,部署完毕,别忘了一键三联,关注我的B站MarkerHub,公众同名,哈哈。

关注公众号 JavaCat ,回复关键字前后端部署,获取本文档!

视频讲解:https://www.bilibili.com/video/BV17A411E7aE/

手把手教你Docker+nginx部署Springboot+vue前后端分离项目(1) 前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里获取!既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化![外链图片转存中…(img-PCX66cht-1712759738957)]由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端) 阅读详情

相关推荐

2024年Java最全手把手教你Docker+nginx部署Springboot+vue前后端分离项目,docker入门视频教程

各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了[外链图片转存中…(img-GA9JF3RV-1714889639739)][外链图片转存中…(img-GyzK7VLk-1714889639739)]

2401_84692253的博客 912

从0到1,完整搭建Springboot开源博客项目!

基本信息项目名称:eblog摘要:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包...

java思维导图 1254

前后端分离项目开发部署实战(SpringBoot+Vue)

综合性的前后端分离项目实战,使用SpringBoot和Vue2.0框架,选用nginx服务器进行docker容器化部署。

点滴记录IT技术进程 4943

使用Nginx部署Vue+SpringBoot前后端分离项目(超详细!)

需要的工具:Xshell 连接远程服务器、Xftp 服务器文件可视化。

飞翔的企鹅的博客 3万+

JavaIndex:公众号【MarkerHub】的文章分类索引,直联公众号文章链接!

MarkerHub公众号文章索引 梳理Java知识,解析开源项目! 公众号【MarkerHub】的文章分类索引,直联公众号文章链接! 扫码关注公众号,学习Java,在MarkerHub! 基础知识 基础中基础 傻傻分不清之 Cookie、Session、Token、JWT 又一个难题!Java序列化和反序列化为什么要实现Serializable接口 谈谈在Java中如何优雅地判空 懵!啥是Java软引用、弱引用、虚引用? 为什么Java中1000==1000为false,而100==100为true? StringBuider 在什么条件下、如何使用效率更高? 浅析 VO、DTO、DO、PO 的概念、区别和用处! Java特性 感受lambda之美,推荐收藏,需要时查阅 来了来了,Java14它真的来了! 别用Date了,Java8新特性之日期处理,现在学会也不迟! 一次List对象去重失

从零开始用QP框架开发STM32:事件驱动编程实战指南(附状态机设计技巧)

本文详细介绍了如何使用QP框架在STM32上实现事件驱动编程,包括状态机设计技巧和嵌入式开发实践。通过对比传统前后台系统和RTOS,展示了QP框架在资源占用、实时性和代码可维护性方面的优势,并提供了从环境搭建到高级状态机设计的完整指南。

h6i7j8的博客 1174

docker-compose搭建一整套前、后端分离系统部署涉及到mysql5.7、mysql8.0,nginx1.23、redis6、vue、jar包(springboot)

那么这篇文章就手把手教大家从零搭建一套前后端分离项目的部署环境以及开发中常用到的一些软件的部署,本文主要涉及到mysql5.7、mysql8.0,nginx1.23、redis6、vue、jar包(springboot)的部署,本文的mysql5.7端口是3306,mysql8.0端口是3406,nginx1.23默认端口是80,redis6端口是6379,具体涉及到的端口配置参考下文docker-compose.y

qq_43436985的博客 1213

空间数据库(1):Arcgis10.2连接PostgreSQL9.1,创建空间数据库,导入空间数据

1、arcgis的安装对于gis人员来说想必并不陌生,此处就不赘述了。那么就先从PostgreSQL说吧,我这里用的是跟Arcgis desktop 10.2所支持的9.1或者9.2版本,大家也可以用相对应的更高的版本来配置,注意的是版本一定要相互匹配,不仅是Arcgis与PostgreSQL的匹配,还有PostgreSQL与PostGIS匹配。 按道理desktop是32位的,应该用PostgreSQL的32位,但是我实在找不到32位的PostGIS9.1,所以就用64位的吧,后面配置部分可能需

XIAOHUA的博客 1319

Docker-Compose + Nginx 部署前后端分离项目

Docker-Compose + Nginx 部署前后端分离项目 项目是采用Vue +Springboot 的前后端分离项目 一、预处理 1、项目打包前,先去File–>Setting–> File Encoding 中 改为UTF-8,防止乱码错误! 注意:此时如果修改为UTF8后我们的properties配置文件中文乱码:不要慌没问题,直接把中文删除再写即可! 2、由于后端项目是使用SpringBoot编写的,我们打包需要一个打包插件,记得导入包!不然可能出现打出的包中没东西 &

[爪洼ing]的博客 4923

基于PYNQ-Z2复现yolov2

基于PYNQ-Z2复现Yolo_v2 参考资料:源项目工程 开发板配置 0 使用说明 0.1 简介 本文档主要分为三个部分: [1] 搭建HLS工程生成Yolo_v2的IP。 [2] 在Vivado中使用生成好的IP进行block design,导出bit文件和tcl文件。 [3] 将相关文件导入至PYNQ-Z2板中,在Jupyter Notebook上进行编程实现。 0.2 所需硬件  PYNQ-Z2开发板、USB数据线、网线  SD卡、读卡器 0.3 所需软件  Vivado 2018.3  V

谦豫 1万+

UDS $27服务DLL文件生成

UDS 27算法 DLL文件生成

hkj8808的博客 1284

Docker部署前后端分离项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉💞当前专栏:✨特色专栏:🥭本文内容:Docker部署前后端分离项目📚个人知识库:,欢迎大家访问。

分享思想,留下痕迹。 2199

ROS2 DDS中间件(图文并茂+超详细)

DDS 的目标场景在端上,致力于使端上的应用可以更容易的进行通信,由于它的完全分布式架构,可以方便的将端上的应用拆分为多进程架构,从而提高端的容错能力。从产品定位角度来讲,它和 Chromium 中的 mojo 都是端上的通信中间件,只不过 mojo 不强调分布式,内部集成了更多的特定于端上的机制,比如句柄的传输,消息的缓存等。但由于 mojo 生于 Chromium,目前官方并没有把它独立出来,所以用起来比较不方便。而 DDS 或许可以在简单的场景下作为 mojo 的替代品。

weixin_39939185的博客 5285

Docker部署前后端分离项目(Docker+Nginx+Vue+SpringBoot)

使用Docker+Docker-Compose部署前后端分离的项目

PyongSen的博客 8501

从零到英雄:WSL2与Ubuntu22.04的终极性能调优指南

本文详细介绍了如何在Windows系统中通过WSL2与Ubuntu22.04进行性能调优,涵盖内核定制、GPU加速、网络优化等关键技巧,帮助开发者打造媲美原生Linux的高性能开发环境,特别适合AI训练和大数据处理等资源密集型任务。

weixin_29218509的博客 524

别再用RIDE了!VSCode+RobotFramework插件打造现代化测试开发环境

本文介绍了如何利用VSCode和RobotFramework插件构建现代化的测试开发环境,替代老旧的RIDE工具。详细讲解了环境配置、插件安装、智能代码补全、测试运行与调试等核心功能,帮助开发者提升自动化测试效率。文章还提供了高级技巧、最佳实践和常见问题解决方案,助力团队实现平滑迁移。

weixin_28829629的博客 480

Docker(8) docker-compose部署Vue+SpringBoot前后端分离项目

一、前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 二、docker-compose 部署Vue+SpringBoot 前后端分离项目 基本环境: CentOS7.3 Dokcer MySQL 小编部署项目是基于服务器 关于Dockerfile的命令理解,这里贴一张网上看见比较有意思的图吧 ...

郑清 8924

YOLOv5源码逐行超详细注释与解读(5)——配置文件yolov5s.yaml

全网最详细的YOLOv5源码解读之配置文件yaml。逐行注释,逐句讲解,一文带你了解yaml。小白必看!

路人贾的博客 1万+

【原生部署】SpringBoot+Vue前后端分离项目

SpringBoot+Vue前后端完全分离项目在linux服务器上环境的搭建与部署,包含JAVA、MySQL、Redis、Nginx、Node.js、Git、Maven的搭建

观止study 8389

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 架构师多如过江之鲫,但你真的了解架构师这个工种吗?
下一篇: 贼厉害,手撸的 SpringBoot缓存系统,性能杠杠的!
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值