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

JAR包Docker部署

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

1. 创建Dockerfile

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

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
bash 复制代码
mvn clean package

3. 构建Docker镜像

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

bash 复制代码
docker build -t my-spring-boot-app:latest .

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

4. 运行Docker容器

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

bash 复制代码
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 复制代码
http://localhost:8080

注意事项

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

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

相关推荐
RainbowSea1 小时前
问题:后端由于字符内容过长,前端展示精度丢失修复
java·spring boot·后端
风象南1 小时前
SpringBoot 控制器的动态注册与卸载
java·spring boot·后端
我是一只代码狗2 小时前
springboot中使用线程池
java·spring boot·后端
hello早上好2 小时前
JDK 代理原理
java·spring boot·spring
PanZonghui2 小时前
Centos项目部署之运行SpringBoot打包后的jar文件
linux·spring boot
沉着的码农3 小时前
【设计模式】基于责任链模式的参数校验
java·spring boot·分布式
zyxzyx6663 小时前
Flyway 介绍以及与 Spring Boot 集成指南
spring boot·笔记
一头生产的驴5 小时前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
程序员张37 小时前
SpringBoot计时一次请求耗时
java·spring boot·后端
麦兜*13 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构