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应用了。如果有任何问题或需要进一步的帮助,请随时评论提问。

相关推荐
洋洋技术笔记29 分钟前
Spring Boot条件注解详解
java·spring boot
洋洋技术笔记1 天前
Spring Boot配置管理最佳实践
spring boot
用户8307196840822 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
大道至简Edward2 天前
Spring Boot 2.7 + JDK 8 升级到 Spring Boot 3.x + JDK 17 完整指南
spring boot·后端
洋洋技术笔记2 天前
Spring Boot启动流程解析
spring boot·后端
怒放吧德德2 天前
Spring Boot 实战:RSA+AES 接口全链路加解密(防篡改 / 防重放)
java·spring boot·后端
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
QQ5110082853 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php
WeiXin_DZbishe3 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
追风筝的人er3 天前
企业管理系统如何实现自定义首页与千人千面?RuoYi Office 给出了完整方案
vue.js·spring boot·spring cloud