É importante perceber que, dependendo da forma como as instruções são colocadas no Dockerfile, a imagem final poderá ser - muito! - maior ou menor.
Diminuindo o tamanho da imagem em 90%
Neste artigo intitulado Hello World Java-Docker, criei uma aplicação java simples e que rodava em container do Docker, sem explorar outros recursos, apenas como uma introdução sobre como rodar o Java no Docker. O arquivo Dockerfile.simple é o que segue:
# constrói uma imagem baseada no openjdk 8
FROM openjdk:8
ADD HelloJavaDocker.class .
ENTRYPOINT ["java", "HelloJavaDocker"]
    $ docker build -f Dockerfile.simple -t hello-java-docker .    
$ docker run -it hello-java-docker    
Entretanto, ao executar o comando docker images, veremos que a imagem hello-java-docker é incrivelmente grande, possuindo o tamanho de quase 624MB:
rafael@rafael-desktop ~/generalProjects/HelloJavaDocker $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
hello-java-docker   latest              83ce2e26c600        About a minute ago   624MB
openjdk             8                   c14ba9d23b3a        4 weeks ago          624MB
rafael@rafael-desktop ~/generalProjects/HelloJavaDocker $     
FROM openjdk:8 AS Builder
ENV APP_HOME=/root/dev/apps/
WORKDIR $APP_HOME
COPY HelloJavaDocker.java $APP_HOME
RUN javac HelloJavaDocker.java
FROM openjdk:8-jre-alpine
WORKDIR root
COPY --from=Builder /root/dev/apps/HelloJavaDocker.class .
ENTRYPOINT ["java", "HelloJavaDocker"]    - A primeira instrução FROM, para a qual demos o alías de Builder, utiliza a imagem openjdk:8.
- Criamos uma variável de ambiente com ENV dentro da imagem
- Copiamos o arquivo com o código java para APP_HOME
- Dessa vez compilamos a classe dentro do container
- O próximo FROM cria uma imagem baseada no JRE Linux Alpine
- Copiamos o .class gerado em Builder
- Executamos a aplicação
Agora, vamos construir uma imagem chamada chamada hello-java-docker-smaller. Em seguida criamos o container:
$ docker build -f Dockerfile.builders -t hello-java-docker-smaller .
$ docker run -it hello-java-docker-smaller    rafael@rafael-desktop ~/generalProjects/HelloJavaDocker $ docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
hello-java-docker-smaller   latest              b5daa3a785c1        3 minutes ago       83MB
                                    c1625c3ad04b        3 minutes ago       624MB
hello-java-docker           latest              83ce2e26c600        6 minutes ago       624MB
openjdk                     8                   c14ba9d23b3a        4 weeks ago         624MB
openjdk                     8-jre-alpine        2e01f547f003        7 weeks ago         83MB
rafael@rafael-desktop ~/generalProjects/HelloJavaDocker $ 
      
"Falando novamente ao povo, disse Jesus: “Eu sou a luz do mundo; aquele que me segue, não andará em trevas, mas terá a luz da vida."
Jo 8:12


 


































