Spring Boot Maven项目构建Docker镜像

Spring Boot Maven项目构建Docker镜像

构建Docker镜像常规做法是写个Dockerfile,如果你使用 Spring Boot 2.3+,官方内置了对 Cloud Native Buildpacks 的支持。你完全不需要写 Dockerfile,直接一行命令就能生成生产级镜像。

shell 复制代码
# 它会自动检测你的 JDK 版本(默认会用最新的 LTS),并把打包好的 JAR 自动放入镜像中,且优化了分层。
mvn spring-boot:build-image -Dspring-boot.build-image.imageName=my-app-name:1.0

对于父子结构的 Spring Cloud 项目,构建命令的关键在于:在父工程目录下运行,并利用 Maven 的"项目限定符" (-pl) 来指定具体的子模块。

shell 复制代码
mvn clean spring-boot:build-image -pl order-service -am -DskipTests

或者全量构建,一次性构建所有微服务:

shell 复制代码
# Maven 会遍历所有子模块,只要发现该模块有 Spring Boot 插件配置,就会依次为其生成 Docker 镜像。
mvn clean install -DskipTests
mvn clean spring-boot:build-image -DskipTests

需要在pom.xml文件中添加,这是 Spring Boot 项目的标配,如果是继承spring-boot-starter-parent,那么就会有这个插件了:

xml 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
    </plugins>
</build>

怎么传递参数:

使用 spring-boot:build-image 构建的镜像,本质上是一个标准化的 Docker 镜像。它内部使用了 Cloud Native Buildpacks,默认的启动入口(Entrypoint)会自动处理 JVM 参数和 Spring 配置。

要指定参数主要有以下做法:

运行时通过环境变量传参

shell 复制代码
# 环境变量名建议使用大写加下划线(如 SPRING_CLOUD_NACOS_DISCOVERY_IP),Spring Boot 会自动将其映射为配置文件中的 spring.cloud.nacos.discovery.ip
docker run -d \
  --name my-service \
  -e SPRING_CLOUD_NACOS_DISCOVERY_IP=192.168.1.100 \
  -e JAVA_TOOL_OPTIONS="-Xms512m -Xmx512m" \
  my-app-name:latest

通过命令行参数(Arguments)传参

shell 复制代码
# 使用传统的 --参数名 方式,在镜像名之后直接添加
docker run -d my-app-name:latest --spring.cloud.nacos.discovery.ip=192.168.1.100
相关推荐
专业程序开发源1 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
AI人工智能+电脑小能手2 小时前
Java 企业级工具类全家桶-74-JSON序列化工具类
spring boot·jackson·jdk 17·objectmapper·java工具类·json序列化·dto互转
更深兼春远2 小时前
第2篇:Dify 部署保姆级教程:用 Docker跑起来
docker·容器·dify
ZealSinger3 小时前
Boot4升级PostConstruct不跑了
java·spring boot·spring·升级迁移
专业程序开发源4 小时前
django新闻推荐系统70655-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·django·课程设计
vx_Biye_Design4 小时前
springboot一站式旅游管理平台81037-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·课程设计·express·旅游
vx_Biye_Design4 小时前
springboot宠物寄养服务预约与监管系统82684-计算机课程设计、毕业设计
java·vue.js·spring boot·elasticsearch·课程设计·express·宠物
程序员小杰@4 小时前
Spring Boot 常用注解分类速记
java·spring boot·后端
vx_Biye_Design4 小时前
springboot小学生英语学习APP62773-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·学习·课程设计
9624565 小时前
餐饮 SaaS 优惠券系统架构演进(三):优惠计算引擎——商品级计价、冲突策略与优惠分摊
java·数据库·spring boot