Este artigo apresentará 3 técnicas para criar uma imagem Docker de uma aplicação SpringBoot usando Maven.
(1)Usar o recurso integrado ao spring-boot-maven-plugin build-image.
(2)Usar o recurso do Google jib-maven-plugin。
(3)Usar dockerfle-maven-plugin。
Aplicação Spring Boot
Para facilitar a prática, é necessário um projeto Spring Boot.
Endereço do projeto de demonstração:
https://github.com/davelms/me...
Ambiente do projeto:
Java 11
Maven 3.6.3
Usar mvn package é possível gerar o pacote jar normalmente.
também pode funcionar normalmente:
java -jar target/demo-application-0.0.1-SNAPSHOT.jar
Página de teste:
http://localhost:8080/hello

O projeto de demonstração está pronto. Agora vamos colocar em prática os 3 métodos de construção de imagens.
I、build-image do plugin Maven do Spring Boot
O Spring Boot já vem com seu próprio plugin para criar imagens Docker. Não precisamos fazer nenhuma alteração, pois ele já está no spring-boot-starter-parent do pom.xml.
Você não precisa escrever um Dockerfile nem se preocupar com mais nada: o plugin cuida de tudo, incluindo as questões de segurança, memória e desempenho recomendadas pelo Spring.
Basta executar:
mvn spring-boot:build-image
Após a conclusão da execução, você verá uma mensagem de sucesso:

Executar o teste do contêiner:
docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT
Atenção:a porta local mapeada aqui é 9090。

II、jib-maven-plugin
Jib é um plugin para Maven e Gradle usado para criar imagens Docker.
Este plugin tem uma característica muito marcante:Não é necessário instalar o Docker localmente,o que é muito conveniente para a integração contínua, pois o Jib pode enviar diretamente para o repositório Docker especificado.
O Jib também dispensa a criação de um Dockerfile.
Também é muito fácil de usar: não é necessário alterar o código e pode-se até manter o pom.xml como está.
Basta executar:
mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
mvn compile
é o comando de compilação do maven que conhecemos bem.
com.google.cloud.tools:jib-maven-plugin:2.3.0
Especifica o uso do plugin Jib
dockerBuild
é o objetivo de execução do plugin Jib,dockerBuild especifica que o Jib deve usar o Docker instalado localmente.
Após a conclusão da execução, você verá uma mensagem de sucesso:

Inicie o contêiner para testar:
docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT
Atenção:a porta local mapeada aqui é 9091。

III、dockerfile-maven-plugin
Esse plugin exige que escrevamos um Dockerfile, que já está preparado no projeto Domo.
O Dockerfile deve ficar no diretório raiz do projeto, junto com o pom.xml.

Em seguida, é necessário adicionar algumas configurações ao pom.xml para especificar o repositório, a tag e também o que foi definido no Dockerfile acima JAR_FILE。

Executar mvn package nessa etapa, a imagem será criada automaticamente; após a execução, aparecerá a mensagem:

Executar o contêiner:
docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT
Atenção: a porta local mapeada é 9092。

Resumo

Dessas 3 opções, a mais prática é a forma nativa do SpringBoot: você não precisa fazer nada por conta própria e pode usá-la diretamente.
O que mais se destaca é o Jib, que dispensa a instalação local do Docker, permite enviar diretamente para o repositório especificado e também é muito simples de usar.
Parece que o plugin mais trabalhoso é o dockerfile-maven-plugin: é preciso escrever um Dockerfile e ainda adicionar configurações,Mas,na prática, ele é o mais fácil de usar, pois os 2 primeiros dependem do ambiente de rede (você sabe como é); mesmo configurando um espelho de imagens do Docker, ainda ocorrerão erros, pode experimentar.
