Base de Données
MyElectricalData en mode serveur supporte deux types de bases de données : SQLite (par défaut) et PostgreSQL.
Le type de base de données est automatiquement détecté depuis l'URI de connexion.
SQLite (par défaut)
SQLite est utilisé par défaut. Configuration dans .env.docker :
DATABASE_URL=sqlite+aiosqlite:///./data/myelectricaldata.db
Avantages :
- Simple, pas de serveur supplémentaire
- Parfait pour le développement et les petites installations
- Fichier unique dans
apps/api/data/
Commandes :
# Démarrer avec SQLite (par défaut)
docker compose up -d
PostgreSQL (recommandé en production)
Pour une utilisation en production avec plus de performances et de fonctionnalités.
Configuration
- Modifier
apps/api/.env.docker:
# Commenter SQLite
# DATABASE_URL=sqlite+aiosqlite:///./data/myelectricaldata.db
# Activer PostgreSQL
DATABASE_URL=postgresql+asyncpg://myelectricaldata:VOTRE_MOT_DE_PASSE@postgres:5432/myelectricaldata
- Modifier
docker-compose.ymlpour définir le mot de passe PostgreSQL :
postgres:
environment:
POSTGRES_PASSWORD: VOTRE_MOT_DE_PASSE
Important : Le mot de passe dans DATABASE_URL et dans docker-compose.yml doivent correspondre.
- Démarrer PostgreSQL avec le profil dédié :
# Démarrer tous les services + PostgreSQL
docker compose --profile postgres up -d
# Ou reconstruire si nécessaire
docker compose --profile postgres up -d --build
Avantages :
- Meilleur pour la production
- Performances accrues avec beaucoup d'utilisateurs
- Fonctionnalités avancées (JSONB, full-text search, etc.)
- Backups plus faciles
Migration de SQLite vers PostgreSQL
-
Exporter les données de SQLite (optionnel si vous voulez conserver les données)
-
Modifier
.env.dockerpour pointer vers PostgreSQL -
Modifier
docker-compose.ymlavec le mot de passe -
Si vous changez de mot de passe PostgreSQL, vous devez supprimer le volume :
docker compose --profile postgres down -v -
Redémarrer avec
docker compose --profile postgres up -d -
Les tables seront créées automatiquement au démarrage
Retour à SQLite
- Modifier
.env.dockerpour remettre l'URL SQLite - Redémarrer normalement :
docker compose up -d
Volumes Docker
- SQLite :
./apps/api/data/myelectricaldata.db - PostgreSQL : volume Docker
postgres_data
Notes importantes
- Le type de base de données est auto-détecté depuis
DATABASE_URL - Le changement de base de données nécessite un redémarrage du backend
- Les deux bases utilisent les mêmes modèles SQLAlchemy
- Les migrations Alembic fonctionnent avec les deux
- Important : Si vous changez le mot de passe PostgreSQL, vous devez supprimer le volume avec
docker compose --profile postgres down -v