
Olá,
Com a chegada do spring boot 2.3 agora temos um novo goal chamado “build-image”, na verdade por debaixo dos panos a spring preparou uma integração com o projeto: https://buildpacks.io/. Para quem ainda não conhece o projeto, esse trata de aspectos relacionados a geração de containers multicamadas de forma simplifica usando varios conceitos interessantes, no futuro talvez aborde um pouco mais sobre o tema, mas por hoje vou apenas mostrar como podemos fazer a geração de containers usando o novo goal.
E aqui está o comando, tudo que temos que fazer agora para gerar a imagem é executar o comando abaixo na raiz do seu “projeto spring boot 2.3”:
$ mvn spring-boot:build-image
Por padrão o nome do container será o nome do seu projeto e a tag será a versão do seu projeto.
Para rodar o container recem criado basta executar:
$ docker run -it -p 8080:8080 demo:0.0.1-SNAPSHOT
Se você está usando o spring tool suite, segue um exemplo abaixo:

Usando DIVE para entender os layers da imagem docker
Para entender melhor o trabalho do buildpack, vamos analisar a imagem usando o dive ( https://github.com/wagoodman/dive )

Iteragindo com o dive é possível ver cada layer do container, incluindo a mais importante: 18MB → Nossa Aplicação.
Habilitando o modo “layered” para criaçao das imagens
Basta adicionar a configuração abaixo no seu pom.xml:

Essa é uma alternativa para aquele cenário onde apenas o código fonte da aplicação sofreu modificação, dessa forma nem todas as layers precisam ser geradas novamente.
olhando novamente para o dive é possivel ver a diferença:

Isso é tudo pessoal, agora a geração de um container para um projeto spring boot se resume apenas em rodar build-image.
Abrcs.
Natanael Fonseca