[Spring Boot 2.3] – Gerando uma imagem docker com buildpacks.

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

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s