Atualizei meu aplicativo para Spring Boot 3.4 e a verificação de integridade não está mais funcionando. O que preciso mudar para que a verificação de integridade funcione novamente?
Registros
Se eu chamar docker container inspect
, vejo os seguintes logs para a verificação de integridade:
"Health": {
"Status": "unhealthy",
"FailingStreak": 6,
"Log": [
{
"Start": "2025-02-10T09:12:40.658415283Z",
"End": "2025-02-10T09:12:40.716595544Z",
"ExitCode": -1,
"Output": "OCI runtime exec failed: exec failed: unable to start container process: exec: \"/bin/sh\": stat /bin/sh: no such file or directory: unknown"
},
Configuração
<configuration>
<image>
<env>
<BP_SPRING_CLOUD_BINDINGS_DISABLED>true</BP_SPRING_CLOUD_BINDINGS_DISABLED>
<BP_HEALTH_CHECKER_ENABLED>true</BP_HEALTH_CHECKER_ENABLED>
<BPE_LANG>en_US.UTF-8</BPE_LANG>
</env>
<buildpacks>
<buildpack>gcr.io/paketo-buildpacks/adoptium</buildpack>
<buildpack>urn:cnb:builder:paketo-buildpacks/java</buildpack>
<buildpack>gcr.io/paketo-buildpacks/health-checker:latest</buildpack>
</buildpacks>
<createdDate>${maven.build.timestamp}</createdDate>
</image>
</configuration>
<goals>
<goal>build-image-no-fork</goal>
</goals>
Comando
Adicionei ao meu docker container run
comando os parâmetros de verificação de integridade:
--health-cmd /workspace/health-check
--health-interval 1m
--env THC_PORT=8081
--env THC_PATH=/health
Veja também: Como definir THC_PORT e THC_PATH com o Spring Boot 3.3?
Pesquisar
Li as notas de lançamento do Spring Boot 3.4 :
Paketo tiny Builder para construção de imagens OCI
O construtor padrão Cloud Native Buildpacks usado ao construir imagens OCI para aplicativos JVM usando a
spring-boot:build-image
meta Maven ou a tarefa GradlebootBuildImage
mudou depaketobuildpacks/builder-jammy-base
parapaketobuildpacks/builder-jammy-java-tiny
. Isso deve resultar em imagens menores. Otiny
construtor não inclui um shell, portanto, pode não funcionar para aplicativos que exigem um script de inicialização para executar o aplicativo. Ele também inclui um conjunto reduzido de bibliotecas de sistema que, dependendo do seu aplicativo, podem não atender às suas necessidades. Consulte a documentação do Maven ou Gradle para obter informações sobre como personalizar o construtor.
Então não há mais shell na imagem. Isso corresponde aos logs.
Li o tópico Empacotamento de imagens OCI , mas não entendi o que preciso mudar.
Pergunta
O que preciso alterar na configuração do Spring Boot Maven para que a verificação de integridade funcione novamente?