En aquest tema, aprendrem com contenitzar una aplicació Spring Boot utilitzant Docker. Docker és una eina que permet empaquetar una aplicació i les seves dependències en un contenidor, assegurant que l'aplicació s'executi de manera consistent en qualsevol entorn.

Objectius del tema

  • Entendre què és Docker i per què és útil.
  • Aprendre a crear un Dockerfile per a una aplicació Spring Boot.
  • Construir i executar una imatge Docker de l'aplicació Spring Boot.
  • Gestionar contenidors Docker.

Què és Docker?

Docker és una plataforma de contenidors que permet als desenvolupadors empaquetar aplicacions juntament amb totes les seves dependències en una unitat estàndard de programari anomenada contenidor. Els contenidors són lleugers, portables i asseguren que l'aplicació s'executi de manera consistent en qualsevol entorn.

Beneficis de Docker

  • Portabilitat: Els contenidors poden executar-se en qualsevol màquina que tingui Docker instal·lat.
  • Aïllament: Cada contenidor s'executa de manera aïllada, evitant conflictes entre aplicacions.
  • Escalabilitat: Facilita l'escalabilitat horitzontal de les aplicacions.

Creant un Dockerfile per a una aplicació Spring Boot

Un Dockerfile és un fitxer de text que conté les instruccions per construir una imatge Docker. A continuació, veurem com crear un Dockerfile per a una aplicació Spring Boot.

Exemple de Dockerfile

# Utilitza una imatge base de Java
FROM openjdk:11-jre-slim

# Estableix el directori de treball dins del contenidor
WORKDIR /app

# Copia el fitxer JAR de l'aplicació al directori de treball
COPY target/my-spring-boot-app.jar /app/my-spring-boot-app.jar

# Exposa el port en el qual l'aplicació s'executarà
EXPOSE 8080

# Defineix la comanda per executar l'aplicació
ENTRYPOINT ["java", "-jar", "my-spring-boot-app.jar"]

Explicació del Dockerfile

  • FROM openjdk:11-jre-slim: Utilitza una imatge base de Java 11 JRE.
  • WORKDIR /app: Estableix /app com a directori de treball dins del contenidor.
  • COPY target/my-spring-boot-app.jar /app/my-spring-boot-app.jar: Copia el fitxer JAR de l'aplicació al directori de treball.
  • EXPOSE 8080: Exposa el port 8080 perquè l'aplicació sigui accessible.
  • ENTRYPOINT ["java", "-jar", "my-spring-boot-app.jar"]: Defineix la comanda per executar l'aplicació.

Construint i executant la imatge Docker

Construir la imatge Docker

Per construir la imatge Docker, utilitza la comanda següent en el directori on es troba el Dockerfile:

docker build -t my-spring-boot-app .

Aquesta comanda crea una imatge Docker amb el nom my-spring-boot-app.

Executar la imatge Docker

Per executar la imatge Docker, utilitza la comanda següent:

docker run -p 8080:8080 my-spring-boot-app

Aquesta comanda executa la imatge i mapeja el port 8080 del contenidor al port 8080 de la màquina host.

Gestionant contenidors Docker

Llistar contenidors en execució

Per veure els contenidors en execució, utilitza la comanda següent:

docker ps

Aturar un contenidor

Per aturar un contenidor, utilitza la comanda següent, substituint <container_id> pel ID del contenidor:

docker stop <container_id>

Eliminar un contenidor

Per eliminar un contenidor, utilitza la comanda següent, substituint <container_id> pel ID del contenidor:

docker rm <container_id>

Exercici pràctic

Objectiu

Contenitzar una aplicació Spring Boot i executar-la en un contenidor Docker.

Passos

  1. Crea un Dockerfile per a la teva aplicació Spring Boot seguint l'exemple proporcionat.
  2. Construeix la imatge Docker utilitzant la comanda docker build.
  3. Executa la imatge Docker utilitzant la comanda docker run.
  4. Verifica que l'aplicació s'executa correctament accedint a http://localhost:8080.

Solució

  1. Crea un fitxer anomenat Dockerfile en el directori arrel del teu projecte Spring Boot amb el següent contingut:

    FROM openjdk:11-jre-slim
    WORKDIR /app
    COPY target/my-spring-boot-app.jar /app/my-spring-boot-app.jar
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "my-spring-boot-app.jar"]
    
  2. Construeix la imatge Docker:

    docker build -t my-spring-boot-app .
    
  3. Executa la imatge Docker:

    docker run -p 8080:8080 my-spring-boot-app
    
  4. Accedeix a http://localhost:8080 per verificar que l'aplicació s'executa correctament.

Conclusió

En aquest tema, hem après com contenitzar una aplicació Spring Boot utilitzant Docker. Hem vist com crear un Dockerfile, construir una imatge Docker i executar-la en un contenidor. A més, hem après a gestionar contenidors Docker. Aquest coneixement és essencial per desplegar aplicacions de manera consistent i escalable en diferents entorns.

Curs de Spring Boot

Mòdul 1: Introducció a Spring Boot

Mòdul 2: Conceptes bàsics de Spring Boot

Mòdul 3: Construint serveis web RESTful

Mòdul 4: Accés a dades amb Spring Boot

Mòdul 5: Seguretat a Spring Boot

Mòdul 6: Proves a Spring Boot

Mòdul 7: Funcions avançades de Spring Boot

Mòdul 8: Desplegant aplicacions Spring Boot

Mòdul 9: Rendiment i monitorització

Mòdul 10: Millors pràctiques i consells

© Copyright 2024. Tots els drets reservats