Taula de continguts

Dockeritzar aplicacions Java

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).

Executar una aplicació Java senzilla en Docker

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»


Executar una aplicació Java basada en Maven en Docker

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»


Executar una aplicació Java basada en Gradle en Docker

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»


Exercicis

Crear una aplicació Java senzilla i executar-la en Docker

Crear una aplicació Java, generar el .jar i executar-la en Docker

Quan s'ha executat un .jar en Docker ha donat aquest error.

Explicar com arreglar-lo

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


Referències

, , , , ,