Diferència entre revisions de la pàgina «Java amb Docker: HelloWorld»

De wikijoan
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «__TOC__ =Introducció= Seguim aquest tutorial: *https://dzone.com/articles/run-simple-jar-application-in-docker-container-1 =Aplicació Java= script ''HelloWorld.java'...».)
 
m
 
(Hi ha una revisió intermèdia del mateix usuari que no es mostren)
Línia 27: Línia 27:
 
</pre>
 
</pre>
 
Ara tenim els següents fitxers:
 
Ara tenim els següents fitxers:
<ptr>
+
<pre>
 
$ ls HelloWorld.*
 
$ ls HelloWorld.*
 
HelloWorld.class  HelloWorld.jar  HelloWorld.java
 
HelloWorld.class  HelloWorld.jar  HelloWorld.java
Línia 69: Línia 69:
 
helloworld                latest              639ac287c3a3        23 minutes ago      467MB
 
helloworld                latest              639ac287c3a3        23 minutes ago      467MB
 
...
 
...
openjdk                  11                 c644efd24273        9 days ago          660MB
+
openjdk                  16                 c644efd24273        9 days ago          660MB
  
  

Revisió de 15:34, 11 juny 2022

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