我正在尝试在我的Spring Boot应用程序中添加健康检查,同时使用构建包,这一做法在“Spring Boot构建镜像与健康检查”问题中有所提及。我的pom.xml
配置如下所示:
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<image>
<builder>dashaun/builder:tiny</builder>
<name>${docker-image-name}</name>
<env>
<BP_HEALTH_CHECKER_ENABLED>true</BP_HEALTH_CHECKER_ENABLED>
</env>
<buildpacks>
<buildpack>urn:cnb:builder:paketo-buildpacks/java</buildpack>
<buildpack>gcr.io/paketo-buildpacks/health-checker:latest</buildpack>
</buildpacks>
</image>
</configuration>
</plugin>
此外,我在docker-compose.yml
中的配置是这样的:
catalog-service:
image: sivaprasadreddy/catalog-service
container_name: catalog-service
environment:
- THC_PATH=/actuator/health
- THC_PORT=8081
ports:
- "8081:8081"
healthcheck:
test: ["CMD", "/cnb/process/health-check"]
start_period: 30s
interval: 5s
retries: 10
当我使用JVM构建(通过mvn spring-boot:build-image
命令)来构建Docker镜像,并且通过上述健康检查设置运行容器时,一切正常。
遇到的问题是:
当我尝试使用mvn -Pnative spring-boot:build-image
来构建GraalVM原生镜像时,它并没有构建原生镜像,而是构建了一个基于JVM的常规镜像。一旦移除<buildpacks>...</buildpacks>
配置,它又能正确地构建出原生镜像了。
我是否需要为支持构建原生镜像而包含额外的构建包?或者我的配置有误吗?