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:
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:
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:
Aturar un contenidor
Per aturar un contenidor, utilitza la comanda següent, substituint <container_id>
pel ID del contenidor:
Eliminar un contenidor
Per eliminar un contenidor, utilitza la comanda següent, substituint <container_id>
pel ID del contenidor:
Exercici pràctic
Objectiu
Contenitzar una aplicació Spring Boot i executar-la en un contenidor Docker.
Passos
- Crea un Dockerfile per a la teva aplicació Spring Boot seguint l'exemple proporcionat.
- Construeix la imatge Docker utilitzant la comanda
docker build
. - Executa la imatge Docker utilitzant la comanda
docker run
. - Verifica que l'aplicació s'executa correctament accedint a
http://localhost:8080
.
Solució
-
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"]
-
Construeix la imatge Docker:
docker build -t my-spring-boot-app .
-
Executa la imatge Docker:
docker run -p 8080:8080 my-spring-boot-app
-
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
- Què és Spring Boot?
- Configuració del teu entorn de desenvolupament
- Creant la teva primera aplicació Spring Boot
- Entenent l'estructura del projecte Spring Boot
Mòdul 2: Conceptes bàsics de Spring Boot
- Anotacions de Spring Boot
- Injecció de dependències a Spring Boot
- Configuració de Spring Boot
- Propietats de Spring Boot
Mòdul 3: Construint serveis web RESTful
- Introducció als serveis web RESTful
- Creant controladors REST
- Gestionant mètodes HTTP
- Gestió d'excepcions en REST
Mòdul 4: Accés a dades amb Spring Boot
- Introducció a Spring Data JPA
- Configuració de fonts de dades
- Creant entitats JPA
- Utilitzant repositoris de Spring Data
- Mètodes de consulta a Spring Data JPA
Mòdul 5: Seguretat a Spring Boot
- Introducció a Spring Security
- Configuració de Spring Security
- Autenticació i autorització d'usuaris
- Implementant autenticació JWT
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ó
- Optimització del rendiment
- Monitorització amb Spring Boot Actuator
- Utilitzant Prometheus i Grafana
- Gestió de registres i logs