Veamos como crear nuestro primer dockerfile y crear un hola mundo con Java dentro de un contenedor docker.
Un dockerfile es un archivo con las instrucciones para que Docker cree un contenedor que podremos ejecutar con la configuración y software que necesitemos.
Vamos a crear un docker y que ejecute un hello world en java. Necesitarás tener previamente instalado docker.
Primero crea tu HelloWorld en Java, lo compilas y ejecutas.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Running HelloWorld into docker");
System.out.println("Hello World Docker!!!");
System.out.println("Bye bye!");
}
}
javac HelloWorld.java
java HelloWorld
Luego crea tu archivo dockerfile con las siguientes instrucciones
FROM alpine:latest
ADD HelloWorld.class HelloWorld.class
RUN apk --update add openjdk8-jre
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "HelloWorld"]
Analicemos este archivo dockerfile:
- FROM alpine:latest - Esta instrucción lo que hace es agregar un linux Alpine a nuestro docker. Alpine linux es un linux que pesa apenas unos 5MB
- ADD HelloWorld.class HelloWorld.class - Agregamos el archivo HelloWorld.class a nuestra imágen con el mismo nombre original.
- RUN apk –update add openjdk8-jre - Instala java*, especificamente un openjdk a nuestra imagen docker.
- ENTRYPOINT [“java”, “-Djava.security.egd=file:/dev/./urandom”, “HelloWorld”] - Ejecutará nuestro codigo HelloWorld
Como ejecutar tu primer dockerfile
Ahora hacemos un build del dockerfile para crear nuestra imagen. Aquí le decimos que haga un build de dockerfile con el nombre docker-hello-world y el tag (etiqueta) latest
docker build --tag "docker-hello-world:latest" .
Si ejecutamos
docker images
veremos nuestra imagen creada y disponible para ser utilizada.
Ahora podemos ejecutarlo y ver el resultado.
docker run docker-hello-world:latest
Conclusión
Has creado tu primer dockerfile para ejecutar un ‘hola mundo’ hecho en Java dentro del contenedor docker.
Hemos visto algunos comandos básicos:
- comando docker build : para crear una imagen docker.
- comando docker run: para ejecutar una imagen docker.
- comando docker images: para ver las imagenes docker creadas.
Puedes ver este código en:
https://github.com/gustavopeiretti/docker-hello-world-java-example
https://gitlab.com/gustavopeiretti/docker-hello-world-java-example