Spring Boot应用部署 - JAR包Docker部署

2024-04-29 10:28

本文主要是介绍Spring Boot应用部署 - JAR包Docker部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JAR包Docker部署

要使用Docker部署Spring Boot应用,需要创建一个Dockerfile来定义如何构建Docker镜像,并且可能还需要在Maven构建脚本中集成Docker插件以简化构建过程。以下是详细的步骤:

1. 创建Dockerfile

在Spring Boot项目的根目录下创建一个名为Dockerfile的文件,内容如下:

# 使用官方的Java基础镜像作为基础环境
FROM adoptopenjdk:11-jre-hotspot# 设置环境变量(可根据实际需求调整)
ENV SPRING_PROFILES_ACTIVE=prod
ENV SERVER_PORT=8080# 设置工作目录
WORKDIR /app# 复制应用所需的文件到容器中
COPY target/my-spring-boot-app.jar app.jar# 声明应用运行时需要暴露的端口
EXPOSE 8080# 定义容器启动时执行的命令
ENTRYPOINT ["java", "-jar", "app.jar"]

这里的my-spring-boot-app.jar是构建得到的WAR文件名,请将其替换为实际的WAR文件名。使用的Java基础镜像是AdoptOpenJDK 11(可替换为所需的Java版本),并且假设应用监听在端口8080。

2. 构建WAR文件

确保已经按照之前的指导将项目配置为WAR打包,并通过Maven构建工具生成WAR文件:

Maven
mvn clean package

3. 构建Docker镜像

在项目根目录下(含有Dockerfile)执行以下命令构建Docker镜像:

docker build -t my-spring-boot-app:latest .

这里my-spring-boot-app是自定义的镜像名,:latest是标签。构建完成后,将拥有一个名为my-spring-boot-app:latest的Docker镜像。

4. 运行Docker容器

使用以下命令启动Docker容器:

docker run -d --name my-running-app -p 8080:8080 my-spring-boot-app:latest

参数解释:

  • -d:在后台运行容器。
  • --name my-running-app:为容器指定一个名称。
  • -p 8080:8080:将主机的8080端口映射到容器的8080端口,使得外部可以通过主机IP和端口访问应用。
  • my-spring-boot-app:latest:使用的镜像名及标签。

5. 访问应用

容器启动后,可以通过以下URL访问Spring Boot应用:

http://localhost:8080

注意事项

  • Dockerfile位置:确保Dockerfile位于项目的根目录,与pom.xml在同一层级。
  • WAR文件路径:在Dockerfile中,COPY命令的源路径应与实际WAR文件生成的位置相对应。
  • 依赖管理:确保Docker镜像中包含所有运行应用所需的依赖,包括但不限于Java运行时环境、应用自身依赖的库等。
  • 日志管理:考虑如何收集和管理容器内的应用日志,可能需要配置日志驱动或使用专门的日志管理服务。
  • 健康检查与监控:如同常规部署,可以利用Spring Boot Actuator提供的端点来监控Docker容器中运行的应用。

按照以上步骤,就能使用Docker部署Spring Boot WAR应用了。如果有任何问题或需要进一步的帮助,请随时评论提问。

这篇关于Spring Boot应用部署 - JAR包Docker部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945833

相关文章

第1章 初始Spring Boot【仿牛客网社区论坛项目】

第1章 初始Spring Boot【仿牛客网社区论坛项目】 前言推荐项目总结第1章初识Spring Boot,开发社区首页1.课程介绍2.搭建开发环境3.Spring入门体验IOC容器体验Bean的生命周期体验配置类体验依赖注入体验三层架构 4.SpringMVC入门配置体验响应数据体验响应Get请求体验响应Post请求体验响应HTML数据体验响应JSON数据 5MyBatis入门配置Use

移动应用APP测试

目录 移动应用测试特点 功能测试 面向接口的自动化测试 Android App UI 自动化测试 iOS App UI 自动化测试 跨平台的 APP UI 自动化测试 专项测试 耗电测试 流量测试 性能测试 内存分析 闪退测试 安全性测试 用户体验测试 结论 如今,移动应用已成为我们日常生活中不可或缺的一部分,从社交媒体到游戏,再到各种实用工具,移动应用

SpringBoot多模块项目MybatisPlus配置

项目目录 主模块配置  配置类 @Configuration@EnableTransactionManagement@MapperScan("com.sms.**.mapper")public class MybatisPlugConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPl

我建议你别基于k8s用写应用 No.178

最近一个月大蕉断更了,主要就在做一些跟 k8s 相关的事情,就在昨天刚刚交付产品了一个版本,这几周几乎把大蕉榨干了。但是大蕉从来不是一个怕事的人,干就完了,一个当十个用,没什么大问题。 但是经过了几个月基于k8s写应用,我还是建议你别轻易尝试用 k8s ,这时候就有人问了,我看你前几个月还叫我们没事多学学 k8s 呢,为什么今天就说轻易别基于 k8s 写应用呢? 且听我细细说来。 基于 Dock

Redis的集群模式——Java全栈知识(20)

1、主从模式 Redis 支持主从模式的集群搭建,这是 Redis 提供的最简单的集群模式搭建方案,目的是解决单点服务器宕机的问题。当单点服务器发生故障的时候保证 Redis 正常运行。 主从模式主要是将集群中的 Redis 节点分为主节点和从节点。然后读和写发生在主节点上面,从节点只能读,主节点修改的数据将同步到从节点。 当主节点发生故障的时候,需要手动的将一个从节点升级为主节点,即可保证 R

JavaEE初阶-多线程进阶2

文章目录 前言一、CAS1.1 CAS的概念1.2 原子类1.3 CAS的ABA问题 二、JUC中常用类2.1 Callable接口2.2 ReentrantLock(可重入)2.3 Semaphore信号量2.4 CountDownLatch类2.5 CopyOnWriteArrayList类2.6 ConcurrentHashMap 前言 对于多线程进阶的部分,更多总结

JAVA 集合(Collections,泛型,set)

Collections 1.是一个集合工具类 2.特点:方法私有,方法都是静态的 3.使用:类名直接调用 4.方法 static <T> boolean addAll(Collection<? super T> c, T... elements)->批量添加元素 static void shuffle(List<?> list) ->将集合中的元素顺序打乱 static <T> void sor

Java | Leetcode Java题解之第90题子集II

题目: 题解: class Solution {List<Integer> t = new ArrayList<Integer>();List<List<Integer>> ans = new ArrayList<List<Integer>>();public List<List<Integer>> subsetsWithDup(int[] nums) {Arrays.sort(nums)

MATLAB基础应用精讲-【数模应用】问卷调研分析

目录 算法原理 问卷分析-分析方法 1. 用户画像分析: 2. 信度分析:

各种java时间格式转换

Java时间格式转换大全import java.text.*;import java.util.Calendar;public class VeDate {/*** 获取现在时间* * @return 返回时间类型 yyyy-MM-dd HH:mm:ss*/public static Date getNowDate() {Date currentTime = new Date();Sim