Configuration PostgreSQL pour Cash Pooling
Configuration Docker Compose pour la base de données PostgreSQL.
Service PostgreSQL
Configuration
- Image:
postgres:16-alpine(PostgreSQL 16 sur Alpine Linux) - Base de données:
cash_pooling - Utilisateur:
cashpooling - Mot de passe:
cashpooling - Port:
5432 - Volume:
postgres_data(persistance des données)
Variables d'environnement
Le service PostgreSQL utilise les variables d'environnement suivantes:
POSTGRES_DB: Nom de la base de données (cash_pooling)POSTGRES_USER: Nom d'utilisateur (cashpooling)POSTGRES_PASSWORD: Mot de passe (cashpooling)PGDATA: Répertoire de données (/var/lib/postgresql/data/pgdata)
Utilisation
Démarrer PostgreSQL
docker-compose up -d postgres
Vérifier le statut
docker-compose ps postgres
Voir les logs
docker-compose logs -f postgres
Se connecter à la base de données
# Via docker exec
docker-compose exec postgres psql -U cashpooling -d cash_pooling
# Via psql local (si installé)
psql -h localhost -p 5432 -U cashpooling -d cash_pooling
Arrêter PostgreSQL
docker-compose stop postgres
Supprimer les données (⚠️ Attention: supprime toutes les données)
docker-compose down -v postgres
Migration Flyway
Flyway est configuré dans contract-core/src/main/resources/application.yml:
spring:
flyway:
enabled: true
locations: classpath:db/migration
baseline-on-migrate: true
validate-on-migrate: true
clean-disabled: true
Flyway s'exécute automatiquement au démarrage du backend Spring Boot (contract-core).
Migrations disponibles
Les migrations Flyway sont situées dans:
contract-core/src/main/resources/db/migration/
Fichiers de migration:
V1__Initial_schema.sql- Schéma initial (Contract, Account, PoolingRule, ExecutionContext)V2__Canonical_data_model.sql- Modèle canonique (Balance, Operation, PoolingMovement)V3__Batch_performance_indexes.sql- Indexes pour les performances batch
Configuration Backend
Le backend Spring Boot se connecte à PostgreSQL via les variables d'environnement:
spring:
datasource:
url: jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5432}/${DB_NAME:cash_pooling}
username: ${DB_USERNAME:cashpooling}
password: ${DB_PASSWORD:cashpooling}
Variables d'environnement pour le backend
Dans Docker Compose, configurez le backend avec:
environment:
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: cash_pooling
DB_USERNAME: cashpooling
DB_PASSWORD: cashpooling
Health Check
Le service PostgreSQL inclut un health check qui vérifie que la base de données est prête:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U cashpooling -d cash_pooling"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
Le backend peut dépendre de ce health check pour s'assurer que PostgreSQL est prêt avant de démarrer.
Persistance des données
Les données sont persistées dans un volume Docker nommé postgres_data:
volumes:
postgres_data:
driver: local
Le volume est créé automatiquement lors du premier démarrage et persiste même si le conteneur est supprimé.
Sauvegarder les données
# Créer une sauvegarde
docker-compose exec postgres pg_dump -U cashpooling cash_pooling > backup.sql
# Restaurer depuis une sauvegarde
docker-compose exec -T postgres psql -U cashpooling cash_pooling < backup.sql
Réseau
Le service PostgreSQL est connecté au réseau cash-pooling-network, permettant aux autres services (backend, etc.) de communiquer avec la base de données via le nom de service postgres.
Sécurité
⚠️ Pour la production, changez les identifiants par défaut:
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-your-secure-password}
Utilisez des secrets Docker ou des variables d'environnement pour stocker les mots de passe de manière sécurisée.