bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


docker_java

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
docker_java [2022/07/08 16:16]
antonio_duenas [Exercicis]
docker_java [2022/07/08 17:10] (actual)
antonio_duenas [Referències]
Línia 1: Línia 1:
-====== Dockeritzant una aplicació Java ======+====== Dockeritzar aplicacions Java ======
  
-En aquest article "dockeritzaremuna aplicació Java.+En aquest article veurem com "dockeritzaraplicacions Java.
  
 {{ java-docker.png }} {{ java-docker.png }}
Línia 7: Línia 7:
 {{tag> #Ciber #CiberMp03 #Ceti #CetiMp03 docker java }} {{tag> #Ciber #CiberMp03 #Ceti #CetiMp03 docker 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.+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.
  
 {{ java_error2.png }} {{ java_error2.png }}
Línia 68: Línia 68:
 \\ \\
  
-===== Executar una aplicació Java basada en Mavel en Docker =====+===== Executar una aplicació Java basada en Maven en Docker =====
  
-El Dockerfile permet crear la imatge del contenidor.+Amb la següent configuració de **Dockerfile** podem executar Maven en Docker
  
-<file Dockerfile Dockerfile> +   FROM maven:3.8-jdk-11 
-# We Use an official Python runtime as a parent image +   RUN mkdir /project 
-FROM python:3.8-slim+   COPY . /project 
 +   WORKDIR /project 
 +   RUN mvn clean package -DskipTests 
 +   CMD ["java", "-jar","app_maven.jar"]
  
-# install db libs +FROM cerca la imatge que es necessita a Docker Hub. En aquest cas, una de Maven.
-RUN apt-get update +
-RUN apt-get install -y default-mysql-client libmariadb-dev +
-RUN apt-get install -y libmariadb-dev-compat gcc gdal-bin libjpeg-dev+
  
-# install app libs +Enllaç a les versions de Maven que hi ha a Docker Hub: [[https://hub.docker.com/_/maven?tab=tags]]
-COPY requirements.txt requirements.txt +
-RUN pip3 install --no-cache-dir -r requirements.txt+
  
-# Mounts the application code to the image +RUN per executar Maven
-COPY . code+
  
-# establish workdir +CMD per executar el codi Java a partir del .jar
-WORKDIR /code+
  
-EXPOSE 8000 +La resta de passos són els mateixos, crear la imatge Docker amb «docker build» i executar-la amb «docker run» 
  
-# runs the development server +\\
-ENTRYPOINT ["python3","manage.py"+
-CMD ["runserver","0.0.0.0:8000"+
-</file>+
  
-Fixeu-vos en què la darrera instrucció equival a ''python3 manage.py runserver 0.0.0.0:8000'', és a dir, que estem fent servir el servidor de desenvolupament, i no un servidor d'aplicacions específic per producció com uWSGI o Gunicorn.+===== Executar una aplicació Java basada en Gradle en Docker =====
  
-El docker-compose ens facilita la posada en producció juntament amb la base de dades:+Amb la següent configuració de **Dockerfile** podem executar Gradle en Docker
  
-<file yaml docker-compose.yml> +   FROM gradle:7.4-jdk11 
-version: '3.1'+   RUN mkdir /project 
 +   COPY /project 
 +   WORKDIR /project 
 +   RUN gradle build 
 +   CMD ["java", "-jar", "app_gradle.jar"]
  
-services:+FROM cerca la imatge que es necessita a Docker Hub. En aquest cas, una de Gradle.
  
-  django_app: +Enllaç a les versions de Gradle que hi ha a Docker Hub[[https://hub.docker.com/_/gradle?tab=tags]]
-    build: . +
-    restart: always +
-    ports: +
-      - 8000:8000 +
-    environment: +
-      - DATABASE_URL=sqlite:///db.sqlite3 +
-      - DEBUG=False +
-      - SECRET_KEY=asecretkeyblabla +
-    volumes: +
-      - ./db.sqlite3:/code/db.sqlite3+
  
-</file>+RUN per executar Gradle
  
-Per posar-ho en marxa primer cal crear un arxiu on persistir la BD local: +CMD per executar el codi Java a partir del .jar 
-  $ touch db.sqlite3 + 
-  $ docker-compose up -d --build+La resta de passos són els mateixos, crear la imatge Docker amb «docker build» i executar-la amb «docker run» 
  
 \\ \\
Línia 142: Línia 129:
  
 Explicar com arreglar-lo Explicar com arreglar-lo
 +</WRAP>
 +
 +<WRAP todo>
 +Crear una aplicació Java, usar Maven, generar el .jar i executar en Docker
 +</WRAP>
 +
 +
 +<WRAP todo>
 +Crear una aplicació Java, usar Gradle, generar el .jar i executar en Docker
 </WRAP> </WRAP>
  
Línia 147: Línia 143:
  
 ===== Referències ===== ===== Referències =====
-  * [[Django]] primer de tot cal seguir aquest article per disposar d'una app Django apta per a ser dockeritzada, en particular amb els ajustos per utilitzar les variables d'entorn (django-environ). +  * Build your Java image: [[https://docs.docker.com/language/java/build-images/]] 
-  * [[Docker]] +  * Run the Java application in a Docker container: [[https://www.jetbrains.com/help/idea/running-a-java-app-in-a-container.html#run_java_app_in_container]] 
-  * [[https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/|Un bon article de com dockeritzar Django amb Nginx i Gunicorn]]. + 
-  * [[https://programacionymas.com/blog/docker-diferencia-entrypoint-cmd|Utilitzant ENTRYPOINT i CMD en Dockerfile]]+  * Dockerizing Java Apps using Jib: [[https://www.baeldung.com/jib-dockerizing]] 
 + 
 +  * (Maven) Build Docker image and run tests: [[https://maven.apache.org/surefire/maven-surefire-plugin/docker.html]]
  
 {{tag> #Ciber #CiberMp03 #Ceti #CetiMp03 docker java }} {{tag> #Ciber #CiberMp03 #Ceti #CetiMp03 docker java }}
  
docker_java.1657296974.txt.gz · Darrera modificació: 2022/07/08 16:16 per antonio_duenas