Java amb Docker: HelloWorld

De wikijoan
Salta a la navegació Salta a la cerca

Introducció

Seguim aquest tutorial:

Aplicació Java

script HelloWorld.java:

public class HelloWorld {
  public static void main(String[] args){
    System.out.println("Hello World :) ");
  }
}

Compilem:

$ javac HelloWorld.java

fitxer manifest.txt: (potser no cal?)

Manifest-Version: 1.0
Created-By: Me
Main-Class: HelloWorld

Generem el jar:

$ jar cfm HelloWorld.jar manifest.txt HelloWorld.class

Ara tenim els següents fitxers:

$ ls HelloWorld.*
HelloWorld.class  HelloWorld.jar  HelloWorld.java

I amb el jar ja podem executar l'aplicació:

$ java -jar HelloWorld.jar
Hello World :)

Docker de l'aplicació

El meu Dockerfile queda de la següent manera:

FROM openjdk:16
WORKDIR /
ADD HelloWorld.jar HelloWorld.jar
CMD java -jar HelloWorld.jar

Canvis que he fet: jo he compilat la meva aplicació amb OpenJDK 16, i per tant he de fer servir un docker com a punt de partida amb la mateixa versió. No cal el EXPOSE 8080.

Creem el docker:

$ docker build -t helloworld .

Sending build context to Docker daemon  7.168kB
Step 1/5 : FROM openjdk:16
16: Pulling from library/openjdk
58c4eaffce77: Pull complete 
e6a22c806ee8: Pull complete 
d14afce73328: Pull complete 
Digest: sha256:bb68f084c2000c8532b1675ca7034f3922f4aa10e9c7126d29551c0ffd6dee8f
Status: Downloaded newer image for openjdk:16
...
Successfully built 639ac287c3a3
Successfully tagged helloworld:latest

$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE

helloworld                latest              639ac287c3a3        23 minutes ago      467MB
...
openjdk                   16                  c644efd24273        9 days ago          660MB


Finalment, puc executar la meva aplicació a través del docker:

$ docker run helloworld
Hello World :)

creat per Joan Quintana Compte, maig 2022