Mês: abril 2017

Docker Maven

Criando a imagem docker com o maven

No post anterior, Como rodar uma aplicação Java com o Docker, falei um pouco sobre o uso de containers para subir uma aplicação desenvolvida com o framework Spring Boot. Agora que sabemos como criar uma imagem por meio da linha de comando, veremos como fazer isso pelo processo de build do Maven. Para isso, vamos usar o plugin docker-maven-plugin desenvolvido pela galera do Spotify.

Alteração no pom

A única alteração no nosso sistema será no pom.xml:

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <imageName>mytask</imageName>
        <baseImage>frolvlad/alpine-oraclejdk8:slim</baseImage>
        <entryPoint>["sh", "-c", "java -Djava.security.egd=file:/dev/./urandom -jar /${project.build.finalName}.jar --spring.profiles.active=${spring.profile}"]
        </entryPoint>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
        <imageTags>
            <imageTag>${project.version}</imageTag>
            <imageTag>latest</imageTag>
        </imageTags>
    </configuration>
</plugin>

As configurações necessárias para o uso do plugin são:

  1. imageName – O nome da imagem após o build;
  2. baseImage – O nome da imagem base;
  3. entryPoint – Comando que será executado ao inicializar o container;
  4. resources – Usado para copiar artefatos para dentro do container;
  5. imageTags – As tags da imagem gerada.

Execução do build com o Maven

Com essa pequena modificação, estamos aptos a criar a imagem direto do build com o Maven. Vamos executar o seguinte comando:


$ mvn clean package docker:build --batch-mode release:update-versions

Com esse comando, estamos solicitando ao plugin a execução do processo de build da imagem com os parâmetros que definimos.

Adicionei ao comando o –batch-mode release:update-versions para que o Maven incremente a versão do pom sem interação com o usuário. Fiz isso para que você possa ver as imagens geradas com a mesma versão do pom (linha 18). Então, todas as vezes que o comando for executado, podemos verificar que uma nova imagem está sendo criada com a mesma versão do projeto.

Uma das facilidades que o plugin nos oferece é a abstração em relação aos comandos necessários para criar a imagem. Há muito mais informações do plugin no github do projeto, vale a pena dar uma espiada. O código fonte do exemplo está no meu github.

Agora que você tem mais uma opção para criar a imagem do Docker, seja por intermédio da linha de comando ou pelo Maven, qual você escolheria e por que?

Por hoje é só galera, abraços e até a próxima!

 

Java docker

Como rodar uma aplicação java com o docker

Fala galera, beleza?

Depois de um longo tempo  me dedicando a outros projetos, estou me reorganizando com o intuito de voltar a escrever para o blog.

Começarei contando uma historinha… Sabe aquela velha frase “Na minha máquina esta aplicação roda”? Pois é, quem nunca passou por isso? Cansei das vezes em que precisei analisar o porquê de um sistema não subir em outro ambiente e, no final, o problema era uma simples configuração.

No post de hoje, vamos aprender a rodar uma aplicação Java em um container Docker. Para isso, vou utilizar a app desenvolvida no post sobre Integração contínua com Travis e Heroku.

Se você ainda não sabe o que é o Docker, dá uma espiada no post O que é o docker?.

Docker

Se você realmente leu o post O que é o docker?, já entendeu que trata-se de uma tecnologia de código aberto, que permite manipular aplicações dentro de containers. Isso possibilita empacotar o nosso software dentro de uma unidade, contendo todo o necessário para a sua execução. Desse modo, conseguimos rodar esse container em qualquer lugar em que  o docker esteja instalado.

Portanto, chega de dar desculpas. Com o Docker, podemos implantar aplicações rapidamente, de modo confiável e estável, em qualquer ambiente.

Uma maravilha, não?

Leia Mais

%d blogueiros gostam disto: