En aquest article veurem com «dockeritzar» aplicacions Java.
Pot ser d'utilitat perquè molts cops es desenvolupa i compila el codi usant una versió de Java i JDK que l'usuari no té instal.lada, fent que no funcioni quan s'executa.
NOTA: Java 16 uses major version 60; Java 8 uses major version 52 (versió instal.lada).
Per a començar, crearem la nostra primera aplicació Java sobre Docker.
Passos:
Fitxer docker_java.java:
class docker_java { public static void main(String[] args) { System.out.println("Aplicació Java en Docker"); }
FROM java:8 WORKDIR /var/www/java COPY . /var/www/java RUN javac docker_java.java CMD ["java", "docker_java"]
A CMD es posen dos arguments: la comanda i el nom de la classe del codi Java
$ docker build -t docker_java .
Podem posar el nom de la app que volem, en aquest cas, docker_java
$ docker run docker_java
En el cas que ja tinguem el codi en un arxiu .jar i compilat en una versió diferent de la instal.lada, caldria modificar el fitxer Dockfile de la manera següent:
FROM openjdk:18 WORKDIR /var/www/java COPY . /var/www/java CMD ["java", "-jar", "app.jar"]
FROM cerca la imatge que es necessita a Docker Hub.
Enllaç a les versions d'OpenJDK que hi ha a Docker Hub: https://hub.docker.com/_/openjdk?tab=tags
WORKDIR pot tenir el valor que es vulgui. /var/www/java és un espai temporal
La resta de passos són els mateixos, crear la imatge Docker amb «docker build» i executar-la amb «docker run»
Amb la següent configuració de Dockerfile podem executar Maven en Docker
FROM maven:3.8-jdk-11 RUN mkdir /project COPY . /project WORKDIR /project RUN mvn clean package -DskipTests CMD ["java", "-jar","app_maven.jar"]
FROM cerca la imatge que es necessita a Docker Hub. En aquest cas, una de Maven.
Enllaç a les versions de Maven que hi ha a Docker Hub: https://hub.docker.com/_/maven?tab=tags
RUN per executar Maven
CMD per executar el codi Java a partir del .jar
La resta de passos són els mateixos, crear la imatge Docker amb «docker build» i executar-la amb «docker run»
Amb la següent configuració de Dockerfile podem executar Gradle en Docker
FROM gradle:7.4-jdk11 RUN mkdir /project COPY . /project WORKDIR /project RUN gradle build CMD ["java", "-jar", "app_gradle.jar"]
FROM cerca la imatge que es necessita a Docker Hub. En aquest cas, una de Gradle.
Enllaç a les versions de Gradle que hi ha a Docker Hub: https://hub.docker.com/_/gradle?tab=tags
RUN per executar Gradle
CMD per executar el codi Java a partir del .jar
La resta de passos són els mateixos, crear la imatge Docker amb «docker build» i executar-la amb «docker run»
Crear una aplicació Java senzilla i executar-la en Docker
Crear una aplicació Java, generar el .jar i executar-la en Docker
Crear una aplicació Java, usar Maven, generar el .jar i executar en Docker
Crear una aplicació Java, usar Gradle, generar el .jar i executar en Docker