Connectez votre Springboot Ă  votre BDD postgre, dans deux dockers đŸ€Ș

Créer votre BDD postgre

On prend simplement notre fichier docker-compose.yml et on ajoute les lignes suivantes :

postgres:
  image: postgres:17-alpine
  ports:
    - 127.0.0.1:5432:5432
  container_name: truck_bdd
  environment:
    - POSTGRES_USER=truck
    - POSTGRES_PASSWORD=123456
    - POSTGRES_DB=truck

On décortique :

postgres:

Le nom utilisé dans docker compose pour vous aider à identifier la machine dans le fichier.

image: postgres:17-alpine

L’image utilisĂ©e, donc une distribution alpine avec un postgres configurĂ©.

  ports:
    - 127.0.0.1:5432:5432

Ceci n’est pas nĂ©cessaire, mais va vous permettre de vous connecter Ă  postgre Ă  partir de votre pc. À utiliser avec prĂ©caution en prod, bien vĂ©rifier que le port n’est pas accessible Ă  n’importe qui. Donc le port 5432 est le port par dĂ©faut de postgre, vous pouvez utiliser un autre port Ă  gauche s’il est dĂ©jĂ  utilisĂ© par un autre programme (par exemple si vous avez plusieurs BDD).

container_name: truck_bdd

Le nom de votre container pour docker, afin de redĂ©marrer, avoir les logs…

  environment:
    - POSTGRES_USER=truck
    - POSTGRES_PASSWORD=123456
    - POSTGRES_DB=truck

Des variables d’environnements qui vont permettre de configurer un utilisateur, un mot de passe ainsi que le nom de la base de donnĂ©es.
– POSTGRES_USER => nom d’utilisateur
– POSTGRES_PASSWORD => mot de passe de l’utilisateur
– POSTGRES_DB => Le nom de la BDD

Changer la configuration dans springboot

build.gradle

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-security'
	runtimeOnly 'org.postgresql:postgresql'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

On remplace juste la ligne

runtimeOnly 'com.h2database:h2'

par :

runtimeOnly 'org.postgresql:postgresql'

On demande Ă  Springboot d’importer le connecteur postgre plutĂŽt que celui de h2.

application.properties

spring.datasource.url=jdbc:postgresql://truck_bdd:5432/truck
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.username=truck
spring.datasource.password=123456
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=create-drop

En détail :

spring.datasource.url=jdbc:postgresql://truck_bdd:5432/truck

L’url de votre connexion Ă  la BDD avec

  • jdbc => le protocole de connexion standard de java
  • postgresql => le type de bdd
  • truck_bdd => le nom de la machine dans votre docker compose
  • 5432 => le port postgre
  • truck => le nom de la BDD qui doit ĂȘtre le mĂȘme que dans le docker-compose.yml (POSTGRES_DB)
spring.datasource.driverClassName=org.postgresql.Driver

La classe Ă  utiliser pour la connexion, chaque type de BDD Ă  sa propre classe.

spring.datasource.username=truck

Le nom d’utilisateur qui doit ĂȘtre le mĂȘme que dans le docker-compose.yml (POSTGRES_USER)

spring.datasource.password=123456

Le mot de passe qui doit ĂȘtre le mĂȘme que dans le docker-compose.yml (POSTGRES_PASSWORD)

spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect

Le dialect que doit utiliser Springboot afin de discuter avec la BDD, chaque type de BDD Ă  son propre dialect.

spring.jpa.hibernate.ddl-auto=create-drop

Indique que Springboot va crĂ©er le schema de la BDD au dĂ©but de la session et le supprimer Ă  la fin. Vous avez d’autres possibilitĂ©s comme create qui va le crĂ©er, mais pas le supprimer ou update … Chaque besoin Ă  sa solution.

Comment lancer tout ça?

Ouvrir votre terminal préféré, faites un cd vers le projet Springboot. Et lancez :

./gradlew build -x test

Ensuite faites un cd vers le dossier contenant votre docker-compose.yml. Et lancez la commande :

docker compose up -d

VoilĂ  tout est prĂȘt. Ça n’Ă©tait pas si compliquĂ©. Avez-vous des questions des commentaires? Bien entendu on peut paramĂ©trer plus de choses, mais lĂ  avec un minimum de code, on a quelque chose qui fonctionne et mĂȘme plutĂŽt bien ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.