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

本文手把手教你如何使用Docker和nginx部署Springboot后端与Vue前端的分离项目。通过编写Dockerfile和docker-compose.yml文件,配置nginx路由规则,解决404问题,实现前后端的顺利通信。详细步骤包括后端打包、配置文件修改、部署到Linux环境,以及docker和docker-compose的安装与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们点击任意一个链接或者按钮或者刷新界面,这时候出现了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知识还不是特别懂的同学,建议自行去补习补习哈。

### 前后端分离项目实战推荐程 对于前后端分离项目的实战学习,以下是几份高质量的程和资源推荐: #### 1. **SpringBoot + Vue前后端分离实战** - 此系列文章涵盖了从基础到高级的内容,适合初学者逐步深入掌握。它分为五个部分,分别讲解了前端设计、后端与数据库连接、前后端通信以及具体的功能实现[^1]。 - 特别是在第四部分中,详细介绍了用户管理功能的具体实现方式,这对于实际项目中的权限管理和身份验证非常有用。 #### 2. **Python+Vue+Django 的前后端分离实践** - 如果您更倾向于 Python 技术栈,这份程提供了独特的学风格,注重实战经验和方法论的传授[^2]。 - 它不仅授技术细节,还帮助开发者理解如何将复杂的业务逻辑拆解高效实施。 #### 3. **前后端分离项目开发部署实战 (SpringBoot+Vue)** - 这是一篇专注于开发与部署相结合的文章,除了介绍前后端交互外,还包括 Nginx 配置、Docker 容器化等内容[^3]。 - 对于希望了解生产环境下的应用部署流程的学习者来说,这无疑是一个很好的起点。 #### 4. **手把手你搭建前后端分离项目 (SpringBoot + Vue + Element UI + MySQL)** - 提供了一个完整的项目构建指南,覆盖了后端服务创建、前端界面开发等多个方面[^4]。 - 使用 Element UI 组件库简化了前端界面的设计工作量,且引入了 MyBatis 工具来处理数据库操作。 #### 5. **Vue 开发配置技巧** - 关于 `vue.config.js` 文件中的代理设置部分,可以参考如下代码片段以解决跨域问题: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true, pathRewrite: { '^/api': '' } } } } }; ``` - 上述配置能够有效缓解本地调试阶段遇到的 CORS 错误[^5]。 --- ### 总结 以上提到的各种资料均具有较高的实用价值和技术含量,可以根据个人兴趣选择合适的方向进行深入探索。无论是 Java 还是 Python 生态圈内的解决方案都值得尝试一番。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值