手动部署前后端分离的项目到本地

1.准备工作

使用maven打包springboot项目为.jar文件得到springboot-0.0.1-SNAPSHOT.jar
手动部署前后端分离的项目到本地

打包vue项目

npm install -g @vue/cli安装Vue CLI

在项目根目录下,运行npm run build命令来构建项目得到一个dist文件夹
手动部署前后端分离的项目到本地

将打包好的文件通过远程仓库中转至docker虚拟机

手动部署前后端分离的项目到本地

在虚拟机拉取镜像,并将docker12-2的内容复制(cp 命令)给我的部署项目my-project

手动部署前后端分离的项目到本地

2.部署前端到nginx docker中

将dist.zip解压放于my-project/frontend下,编写Dockerfile

```
FROM nginx:latest

COPY ./dist /usr/share/nginx/html

COPY ./nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80
```

手动部署前后端分离的项目到本地

创建一个名为 nginx.conf 的配置文件

```
server {
    listen 80;

    server_name localhost;

    location / {
        root /usr/share/nginx/html;

        try_files $uri $uri/ /index.html;

    }

    # 代理 API 请求

location /api {
        proxy_pass http://192.168.88.3:8080;  # 替换为你的 API 服务器地址

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

手动部署前后端分离的项目到本地

构建和运行 Docker 容器

```
docker build -t my-vite-app .(my-vite-app:自定义前端镜像名)
```

手动部署前后端分离的项目到本地

运行并查看镜像

docker run -d -p 8080:80 my-vite-app

手动部署前后端分离的项目到本地

在火狐浏览器中输入http://localhost:8080或http://192.168.88.3:8080跳至如下的登录界面
手动部署前后端分离的项目到本地

3.部署后端

将springboot-0.0.1-SNAPSHOT.jar放于my-project/backend下,编写Dockerfile

```
# 使用官方 OpenJDK 作为基础镜像

FROM openjdk:20-jdk-sli

# 设置工作目录

WORKDIR /app

# 复制项目的 JAR 文件到容器中

COPY ./springboot-0.0.1-SNAPSHOT.jar app.jar

# 暴露应用运行的端口

EXPOSE 8080

# 运行 Spring Boot 应用

ENTRYPOINT ["java", "-jar", "app.jar"]
```

手动部署前后端分离的项目到本地

构建

docker build -t my-springboot-app .
手动部署前后端分离的项目到本地

```
# 创建网络

docker network create my_network
```

注意:使用 Docker 网络连接

在 Docker 中运行多个容器时,建议使用 Docker 网络来确保它们可以相互通信。我已经创建了一个名为 my_network 的网络,确保我的 MySQL 、 my-springboot-app容器在同一个网络中运行,方便通信

运行

docker run -d -p 8090:8080 --network my_network my-springboot-app

手动部署前后端分离的项目到本地

4.部署mysql8

```
docker run --name mysql8 

-e MYSQL_ROOT_PASSWORD=mysql --network my_network 

-e MYSQL_ROOT_HOST='%' 

-p 3306:3306 

-v /root/xr/java/data:/var/lib/mysql 

-d mysql:8.0.40 

--character-set-server=utf8mb4 

--collation-server=utf8mb4_unicode_ci 

--default-authentication-plugin=mysql_native_password
```

手动部署前后端分离的项目到本地

查看构建容器成功
手动部署前后端分离的项目到本地

输入http://192.168.88.3:8090验证后端部署成功,因为还没创数据,所以显示数据为空
手动部署前后端分离的项目到本地

使用mysql容器创建对应数据库

进入mysql容器
docker exec -it mysql8 bash
手动部署前后端分离的项目到本地

登录MySQL

mysql -u root -p
手动部署前后端分离的项目到本地

创建数据库为docker_demo

创建表名为member

```
create database docker_demo;

use docker_demo;

-- 创建成员表
DROP TABLE IF EXISTS `member`;
CREATE TABLE member (
    id INT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    studentId VARCHAR(50) UNIQUE NOT NULL COMMENT '学号',
   name VARCHAR(100) NOT NULL COMMENT '姓名',
   password VARCHAR(255) NOT NULL COMMENT '密码'
   ) COMMENT='成员信息表';
```

手动部署前后端分离的项目到本地

```
INSERT INTO member (studentId, name, password) VALUES ('11111111', '111', '123456');
```

5.遇到的问题

浏览器输入http://192.168.88.3:8090,结果为{"code":"200","msg":"请求成功","data":null}

问题分析:使用curl -X GET http://192.168.88.3:8090/member/selectAll验证,得到

{"code":"500","msg":"请求失败","data":null} 意思是服务器请求失败。我使用docker logs命令查看部署过程,发现MyBatis 在尝试执行数据库操作时遇到了异常,我看了后端代码和部署步骤,发现后端数据库连接用的是本地MySQL

手动部署前后端分离的项目到本地

,而我部署用的是MySQL容器(也就是说我的本地并没有MySQL),导致我的springboot找不到数据库,自然没有数据,请求也不会成功。

解决方案:更新springboot代码,重新打包,重复部署操作。

解决步骤:

1.更新数据库连接 URL

在您的 Spring Boot 应用中,您需要将数据库连接 URL 更新为 MySQL 容器的名称,而不是使用 localhost。在 Docker 中,容器的名称可以用作主机名。
手动部署前后端分离的项目到本地

2. 重新构建并运行后端应用

使用docker stop,docker rm ,docker rmi删除旧容器和旧镜像(内容太多,未截图)

重新构建运行

docker build -t my-springboot-app .
手动部署前后端分离的项目到本地

```
docker run -d -p 8090:8080 --network my_network my-springboot-app
浏览器输入http://192.168.88.3:8090/member/selectAll
```

手动部署前后端分离的项目到本地

表示后端与数据库部署成功

注意: 本身步骤是没有错的,如果结果不如意,可以检查ip地址,我这里用的地址基本都是本地主机,如果你需要改其他主机,请相应地修改;另外注意后端数据库的密码与前端是否匹

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/6149.html

(0)
LomuLomu
上一篇 2025 年 1 月 13 日 上午6:47
下一篇 2025 年 1 月 13 日

相关推荐

  • 一文搞懂架构设计的衡量标准:功能性、可用性、性能、可扩展性、安全性、协作效率、复杂度、成本效益

    大家好,我是汤师爷~ 架构设计的首要目标是服务于业务需求。因此,我们不应该盲目追求所谓的”最厉害的”架构,而应该致力于寻找最适合当前业务环境和未来发展需求的架构方案。 衡量架构的合理性是一个复杂的过程,需要从多个角度进行全面评估。主要可以从以下视角进行分析: 功能需求视角:评估架构是否有效支撑当前业务需求,并具有充分的灵活性以适应未来业务发展。 非功能需求视…

    未分类 2025 年 1 月 15 日
    45500
  • 【Java 学习】面向程序的三大特性:封装、继承、多态

    引言 在面向对象编程的世界里,封装、继承和多态构成了核心的三大特性。本文将深入探讨这些概念,并通过Java代码示例来阐释它们的重要性和实际应用。 1. 封装 1.1 什么是封装呢? 封装是一种隐藏对象的内部状态和复杂性,只对外暴露有限接口的设计原则。就像我们日常使用的电子产品,它们将复杂的内部结构封装起来,只展示用户需要操作的部分。 在Java中,封装通过访…

    2024 年 12 月 27 日
    19800
  • 常见的图形库对比 Echarts Highcharts AntV

    图形库 图形库 特点 图表类型 适用场景 依赖项 官网/文档 ECharts 功能丰富,支持大规模数据,交互性强 折线图、柱状图、饼图、地图、雷达图、散点图、热力图等 复杂数据可视化 无 https://echarts.apache.org/ Chart.js 简单易用,轻量级,支持响应式设计 折线图、柱状图、饼图、雷达图、散点图等 简单图表,快速开发 无 …

    未分类 2025 年 1 月 13 日
    36700
  • IoC究竟是什么?——IoC的基础分析

    IoC全称Inversion of Control,直译为控制反转。这是一种设计理念,并非技术。在明白控制反转之前,应该知道“反转”反的是什么。 被反转的正转 我们从生活中的做饭场景开始。 在家做菜与餐馆吃饭 我们在做饭的时候有很多个步骤,需要准备原料,厨具等等。最后通过一定的顺序加入我们的原料,再进行翻炒等烹饪操作就能够得到一份菜了。我们想吃一份菜不一定需…

    未分类 2025 年 1 月 13 日
    39600
  • Java开发工具包(JDK)获取与安装指南

    获取Java开发工具包(JDK)的首要步骤是访问Oracle官方Java平台网站,其入口为:https://www.java.com。进入官网后,导航至顶部菜单栏的下载区域,定位适合您操作系统的JDK版本并点击进入下载页面。建议选择Windows 64位系统兼容的安装包进行获取。下载完成后,双击启动安装程序,按照向导提示逐步操作。关键步骤中需指定安装目录,推…

    2025 年 5 月 15 日
    90500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信