微服务项目部署

server/2024/9/24 14:31:25/

微服务部署到云服务器是微服务架构中的常见操作,以下是三种常见的部署方式:使用 Spring Boot 内嵌 TomcatDocker 容器化、和 外部 Tomcat 部署

1. 使用 Spring Boot 内嵌 Tomcat 部署

这是 Spring Boot 微服务最常用、也是最简单的部署方式。Spring Boot 项目内置了 Tomcat 容器,打包后的应用可以直接运行,无需依赖外部的应用服务器。

1.1 步骤

1.1.1 打包为 JAR 文件

使用 mavengradle 打包 Spring Boot 项目,生成一个 .jar 文件。

mvn clean package

1.1.2 上传 JAR 文件到云服务器

将打包后的 .jar 文件上传到云服务器的指定目录,通常使用 scp 或通过云服务器提供的文件上传工具。

1.1.3 配置环境

  • 确保云服务器上安装了合适的 Java 环境(如 JDK 11 或更高版本)。
  • 通过命令检查 Java 是否已经安装:
java -version

1.1.4 运行 Spring Boot 应用

在云服务器上,进入到 JAR 文件所在的目录,使用以下命令运行 Spring Boot 应用:

java -jar myapp.jar

应用启动后,Spring Boot 内嵌的 Tomcat 容器将自动启动并监听配置文件中指定的端口(默认 8080)。

1.1.5 后台运行和监控

如果希望应用在后台运行,可以使用 nohup 命令:

nohup java -jar myapp.jar > log.txt 2>&1 &

1.2 适用场景

  • 简单部署:适用于需要快速将微服务部署到服务器并运行的场景,特别是开发环境和小规模微服务
  • 独立服务:每个微服务可以独立运行,服务之间相互隔离。
  • 易维护:Spring Boot 内嵌 Tomcat 自动管理 Web 容器的启动和停止,简化了运维操作。

2. 使用 Docker 容器部署

使用 Docker 是现代微服务架构中非常流行的部署方式,特别适合需要快速扩展和跨平台运行的场景。将 Spring Boot 应用容器化,可以保证一致的运行环境,便于快速部署和管理。

2.1 步骤

2.1.1 编写 Dockerfile

在 Spring Boot 项目根目录下创建一个 Dockerfile,定义应用如何容器化。

# 基于官方的 OpenJDK 镜像
FROM openjdk:11-jre-slim# 将 jar 文件复制到容器中
COPY target/myapp.jar /app.jar# 暴露应用的端口
EXPOSE 8080# 运行 jar 文件
ENTRYPOINT ["java", "-jar", "/app.jar"]

2.1.2 构建 Docker 镜像

使用 docker build 命令构建 Docker 镜像:

docker build -t myapp .

2.1.3 上传 Docker 镜像到云服务器

可以直接将镜像文件复制到云服务器。

2.1.4 在云服务器上运行容器

在云服务器上运行 Docker 容器:

docker run -d -p 8080:8080 myapp

此命令将容器中的 8080 端口映射到主机的 8080 端口,并在后台运行容器。

2.1.5 容器管理

可以使用 docker ps 查看正在运行的容器,使用 docker logs 查看日志。
docker ps
docker logs <container_id>

2.2 适用场景

  • 跨平台部署:Docker 容器可以在任意支持 Docker 的平台上运行,保证了环境一致性。
  • 弹性扩展:适合微服务集群,通过容器编排工具(如 Kubernetes 或 Docker Swarm)可以快速扩展微服务
  • 自动化运维:通过 CI/CD 管道将 Docker 镜像集成到持续交付中,自动化部署过程。

3. 使用外部 Tomcat 部署

将 Spring Boot 项目打包成 WAR 文件,部署到外部的 Tomcat 容器中。这是较为传统的部署方式,适合一些需要统一管理多个 Web 应用的场景。

3.1 步骤

3.1.1 修改 Spring Boot 项目支持 WAR 打包

pom.xml 文件中修改打包类型为 war

<packaging>war</packaging>

确保 spring-boot-starter-tomcat 依赖设置为 provided,以便让外部 Tomcat 管理 Web 容器:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope>
</dependency>

3.1.2 打包成 WAR 文件

运行 mvn clean package,将 Spring Boot 项目打包成 WAR 文件:

mvn clean package

3.1.3 上传 WAR 文件到云服务器

myapp.war 文件上传到云服务器的 Tomcat 安装目录 webapps 文件夹中。

3.1.4 启动 Tomcat

在云服务器上启动 Tomcat,Tomcat 会自动解压 myapp.war 文件并部署应用:

3.1.5 访问应用

Tomcat 启动后,可以通过浏览器访问应用(如 http://cloudserver:8080/myapp)

3.2 适用场景

  • 传统架构:适合已经有外部 Tomcat 服务器并希望统一管理多个应用的场景。
  • 多应用管理:如果你的服务器上运行多个 WAR 应用,使用外部 Tomcat 可以统一管理这些应用,便于配置和运维。

4. 三种方法对比

5. 总结

  • 对于 微服务架构,推荐使用 内嵌 Tomcat 部署Docker 容器化部署
  • Docker 容器化 更适合大规模应用和集群部署,特别是在云原生环境中(如 Kubernetes)。
  • 外部 Tomcat 部署 适合传统的 Web 应用和需要统一管理多个应用的环境。

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

相关文章

哈希表与离散化

一、字符串哈希 1. 什么是哈希 哈希算法是&#xff1a;通过哈希函数将字符串、较大的数等转换为能够用变量表示的或者是直接作为数组下标的数&#xff0c;通过哈希算法转换到的值&#xff0c;称之为哈希值。哈希值可以实现快速查找和匹配。 比如&#xff1a;用数组下标计数法&…

Thinkphp5实现mysql主从复制

在使用ThinkPHP5&#xff08;TP5&#xff09;框架的项目中实现MySQL主从复制&#xff0c;主要步骤包括以下几个方面&#xff1a; 配置MySQL主从复制环境&#xff1a; 主库&#xff08;Master&#xff09;&#xff1a;负责处理写操作&#xff0c;如插入、更新和删除等。从库&…

MyBatis-Plus 逻辑删除

在开发中&#xff0c;逻辑删除是一种常见的需求。所谓逻辑删除&#xff0c;不是将数据从数据库中真正删除&#xff0c;而是通过标记&#xff08;通常是某个字段&#xff0c;比如 deleted 或 is_deleted&#xff09;将数据标记为已删除。在查询数据时&#xff0c;会自动过滤掉标…

荣耀手机AI搜索革新体验:一键总结归纳,让信息获取更高效

在信息爆炸的时代&#xff0c;我们每天都被海量的数据包围&#xff0c;如何快速、准确地获取所需信息成为了现代人的一大挑战。 近日&#xff0c;荣耀手机宣布其AI搜索功能正式上线&#xff0c;这一创新举措不仅为使用者带来了前所未有的便捷体验&#xff0c;更在智能手机领域…

配置win10开电脑时显示可登录账号策略

有1台公用的windows10电脑&#xff0c;电脑上有N多用户&#xff0c;使用人员登录时选择相应的账号登录即可。但在某次使用脚本加固后&#xff0c;发现之前显示的用户都不能显示了。检查加固脚本&#xff0c;是脚本启用了“交互式登录&#xff1a;不显示上次登录”策略。因此&am…

【数据结构与算法】LeetCode:哈希表

文章目录 哈希表一般查找 (键查找)两数之和 (Hot 100)两个数组的交集快乐数环形链表 &#xff08;Hot 100&#xff09;环形链表 II &#xff08;Hot 100&#xff09;和为 K 的子数组 (Hot 100) 计数查找 (值查找)有效的字母异位词字符串中的第一个唯一字符只出现一次的数字 (Ho…

创建基于jwt的token认证

创建基于jwt的token认证 创建方法 官网OAuth2 实现密码哈希与 Bearer JWT 令牌验证 - FastAPI (tiangolo.com) 我个人习惯下面这种方式 0.安装并且导入相关的库和模块 shellpip install pyjwt,python-jose[cryptography],jose配置密钥&#xff0c;加密方法&#xff0c;过期…

学生宿舍管理:Spring Boot技术实现

第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各行业&#xff0c;尤其是规模较大的企业和学校等…