7.5 Configurando o Jib
O Jib (https://github.com/GoogleContainerTools/jib) é uma ferramenta utilizada para gerar imagem de aplicações Java sem a necessidade de utilizar um daemon do Docker. Ele pode ser adicionado ao projeto por meio de um plugin para o Maven (https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin), e separa a aplicação em múltiplas camadas, permitindo um processo de construção da aplicação granular e incremental.
Isso é possível, pois a imagem da aplicação é dividida em camadas de dependências, recursos e classes. Sendo assim, somente as camadas que forem alteradas são reconstruídas, não sendo necessário gerar novamente a imagem completa, o que permite um processo mais rápido, e com capacidade de reprodutibilidade, ou seja, imagens geradas a partir do mesmo código, tem a garantia de serem iguais. Essa capacidade é utilizada para evitar que a imagem seja reconstruída desnecessariamente.
Para configurarmos sua utilização no projeto, vamos alterar o arquivo pom.xml presente na raíz do projeto, adicionando nas propriedades (properties) a versão do Jib que vamos utilizar, no caso a versão 3.1.4:
Na seção de plugins do mesmo arquivo, vamos adicionar o plugin do Jib:
Observe que estamos usando a propriedade `jib.maven-plugin-version` definida no passo anterior para definir a versão do plugin.
Com a tag image, dentro da tag from, definimos qual será a imagem base que vamos utilizar para gerar nossa imagem. Já com a image dentro da tag to definimos qual o nome da imagem que será criada pelo Jib.
Como vamos utilizar um registry local do Docker para publicar a imagem, vamos definir como true a propriedade allowInsecureRegistries.
Já na propriedade entrypoint, dentro de container, especificaremos qual o script que será executado quando o container for inicializado, no caso, o arquivo catalina.sh, o qual receberá como argumento o parâmetro run, definido com a propriedade args.
Podemos definir flags que serão passadas para a JVM dentro da propriedade jvmFlags. Por último, vamos definir a localização da aplicação no container, com a propriedade appRoot e a data da criação da imagem, com a propriedade creationTime. Estamos usando a constante USE_CURRENT_TIMESTAMP que é a hora atual.
Para construir a imagem é necessário executar o seguinte comando:
A saída do comando será semelhante a essa:
Para verificar se tudo deu certo, podemos usar o docker para fazer o pull da imagem:
E na sequencia usar o comando docker images para ver detalhes da imagem baixada:
Como geramos nossa imagem, e publicamos no registry do Docker que configuramos anteriormente, podemos definir um Chart para nosso projeto, de modo que seja possível realizar a implantação da aplicação no cluster Kubernetes. Veremos como realizar esse passo na próxima seção.
Last updated