首页 > 其他分享 >微服务项目部署

微服务项目部署

时间:2024-09-24 18:51:19浏览次数:9  
标签:容器 Tomcat 部署 Spring 服务项目 Boot jar Docker

将微服务部署到云服务器是微服务架构中的常见操作,以下是三种常见的部署方式:使用 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 应用和需要统一管理多个应用的环境。

标签:容器,Tomcat,部署,Spring,服务项目,Boot,jar,Docker
From: https://blog.csdn.net/qq_46637011/article/details/142445416

相关文章

  • node实现自动部署
    node实现自动部署环境准备#安装依赖版本号最好一致"chalk":"^4.1.2","child_process":"^1.0.2",目录src/configinit.js[用于初始化执行,获取当前操作的分支]publish.js[发布所需核心命令]代码/*init.js*//*开发分支直接发布脚本npmrundaily*/const{......
  • YOLOv5:Android手机NCNN部署
    视频链接:YOLOv5:Android手机NCNN部署_哔哩哔哩_bilibili 《YOLOv5:Android手机NCNN部署》课程致力于帮助学生实战YOLOv5目标检测算法在Android手机上的NCNN部署。常心老师将手把手带领大家从0开始搭建YOLOv5+Android+NCNN环境,带领大家排坑、避坑、填坑。本课程将进行环境搭......
  • KubeSphere的三种部署方式
    KubeSphere参考官方网站:什么是KubeSphere概述KubeSphere是在Kubernetes之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的IT自动化运维能力,简化企业的DevOps工作流。它的架构可以非常方便地使第三方应用与云原生生态组件进行即插......
  • springboot项目打包部署到linux运行经验:
    打包:1.mvn:clean2.mvn:package 生成的snapshop-jar包在target下。部署(采用idea自带的ftp) 1.idea的tools-deployment中配置虚拟机的连接,包括用户名,密码,端口 2.配置idea的mapping文件目录映射(随便写),就可以打开虚拟机目录了 3.将idea的target下生产的jar包直接拖动到虚......
  • 阿里云函数计算自定义域名的SSL证书免费全自动申请及部署
    ####(本人现在只做了证书部署,自动任务可以执行但是所生成的记录值没办法自动在阿里云的域名解析列表中更新,因此查到这篇文章,但发现太麻烦……又感觉以后一定会用到,所以先转载保存记录一下,原文地址:https://developer.aliyun.com/article/1475347)阿里云函数计算大大简化了开发部......
  • Centos7.9部署kubernetes(一主两从)(版本1.17.4)
    部署kubernetes1、环境准备IP系统配置角色192.168.8.180centos7.92H4Gmaster192.168.8.181centos7.92H4Gnode1192.168.8.178centos7.92H4Gnode22、在所有节点上关闭swap分区masternode#临时关闭swap分区swapoff-asysctl-wvm.s......
  • 15.10 在k8s部署grafana-deployment并导入k8s大盘
    本节重点介绍:grafanadeployment部署k8s大盘导入准备yaml部署工作1.修改yaml中的节点选择器标签k8s-node01改为你自己的节点2.在节点上创建数据目录mkdir-pv/data/grafana3.部署grafana#部署kubectlapply-fdeployment.yaml#检查[root@prome-master01grafana]#ku......
  • 15.8 在k8s部署prometheus statefulset
    本节重点介绍:检查,kube-systemns[root@prome-master01prometheus]#kubectlgetpod-nkube-systemNAMEREADYSTATUSRESTARTSAGEcoredns-7d75679df-7f7tx1/1Running088mcoredns-7d75679df-qmzbg1/1Running088metcd-prome-master011/1Running088mkube-apise......
  • 华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
    ......
  • OpenStack基础平台部署案例
    OpenStack基础平台部署案例案例描述本案例是讲述如何使用云主机搭建OpenStack云平台。包括两种搭建的方式,一种是直接执行脚本安装,另一种是使用Ansible安装。使用这种方式,不需要重复安装系统去搭建平台,只需要创建云主机去构建OpenStack云平台,使用云主机去练习相应的操作。案......