如何在Spring Boot Maven构建镜像时添加Paketo OpenTelemetry Buildpack
为Spring Boot Buildpack构建添加Paketo OpenTelemetry Buildpack
你可以通过两种核心方式将paketo-buildpacks/opentelemetry纳入构建流程,同时还有更简便的环境变量触发方案:
方式一:命令行显式指定Buildpack
修改你的Maven命令,新增-Dspring-boot.build-image.buildpacks参数,按执行顺序列出opentelemetry buildpack及原有依赖的buildpack(Buildpack执行顺序会影响构建结果,建议将opentelemetry放在spring-boot buildpack之前):
mvn -f $GITHUB_WORKSPACE/pom.xml -pl service spring-boot:build-image -B -e \ -Dspring-boot.build-image.imageName="${{steps.acr_repo_server.outputs.acr_server}}/${{steps.acr_repo_server.outputs.acr_repository_name}}/${{inputs.microservice_name}}:${{ inputs.build_version }}" \ -Dspring-boot.build-image.buildpacks=paketo-buildpacks/opentelemetry@1.14.0,paketo-buildpacks/ca-certificates@3.2.4,paketo-buildpacks/bellsoft-liberica@9.3.7,paketo-buildpacks/syft@1.12.0,paketo-buildpacks/executable-jar@6.2.4,paketo-buildpacks/dist-zip@5.2.4,paketo-buildpacks/spring-boot@5.12.0 \ -Dmaven.test.skip=true -Dmaven.repo.local=${{ github.workspace }}/.m2/repository
注意:请将
1.14.0替换为你需要的opentelemetry buildpack版本号。
方式二:通过pom.xml配置Buildpack列表
在spring-boot-maven-plugin的配置中声明要使用的buildpack集合,避免每次命令行重复输入参数:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <imageName>${your-image-name}</imageName> <buildpacks> <buildpack>paketo-buildpacks/opentelemetry@1.14.0</buildpack> <buildpack>paketo-buildpacks/ca-certificates@3.2.4</buildpack> <buildpack>paketo-buildpacks/bellsoft-liberica@9.3.7</buildpack> <buildpack>paketo-buildpacks/syft@1.12.0</buildpack> <buildpack>paketo-buildpacks/executable-jar@6.2.4</buildpack> <buildpack>paketo-buildpacks/dist-zip@5.2.4</buildpack> <buildpack>paketo-buildpacks/spring-boot@5.12.0</buildpack> </buildpacks> </image> </configuration> </plugin>
更简便的触发方式:环境变量开关
Paketo官方builder镜像默认已包含OpenTelemetry Buildpack,只是未自动启用。只需设置BP_OPENTELEMETRY_ENABLED=true环境变量,即可触发该Buildpack参与构建:
命令行添加环境变量
mvn -f $GITHUB_WORKSPACE/pom.xml -pl service spring-boot:build-image -B -e \ -Dspring-boot.build-image.imageName="${{steps.acr_repo_server.outputs.acr_server}}/${{steps.acr_repo_server.outputs.acr_repository_name}}/${{inputs.microservice_name}}:${{ inputs.build_version }}" \ -Dspring-boot.build-image.env.BP_OPENTELEMETRY_ENABLED=true \ -Dmaven.test.skip=true -Dmaven.repo.local=${{ github.workspace }}/.m2/repository
pom.xml配置环境变量
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <image> <imageName>${your-image-name}</imageName> <env> <BP_OPENTELEMETRY_ENABLED>true</BP_OPENTELEMETRY_ENABLED> </env> </image> </configuration> </plugin>
内容的提问来源于stack exchange,提问作者Kunal
相关产品推荐
相关产品推荐

