J'ai un projet composé de deux principales applications Java qui utilisent huit bases de données PostgreSQL, alors y a-t-il un moyen dans Docker-Composer de construire huit bases de données différentes afin que chacune ait un propriétaire et un mot de passe différents? Puis-je même le faire dans Docker-compose?
exemple:
services:
postgresql:
build: db/.
ports:
- "5432:5432"
environment:
- POSTGRES_DB=database1
- POSTGRES_USER=database1
- POSTGRES_PASSWORD=database1
Je sais que je peux mettre tous les fichiers .sql dans le docker-entrypoint-initdb.d et postgres les fera automatiquement, mais comment déclarer quel fichier .sql va dans quelle base de données?
Tnx, Tom
Selon ce Github issue il serait possible de réaliser plusieurs bases de données en utilisant des scripts bash que vous devrez passer dans votre Dockerfile
[~ # ~] modifier [~ # ~] :
Pour créer plusieurs bases de données, vous pouvez utiliser le script suivant:
https://github.com/mrts/docker-postgresql-multiple-databases
ou
https://github.com/MartinKaburu/docker-postgresql-multiple-databases
Ce qui suggère que vous devez cloner l'un des dépôts git ci-dessus et le monter en tant que volume sur: /docker-entrypoint-initdb.d alors vous pourrez passer plusieurs noms de base de données en utilisant: POSTGRES_MULTIPLE_DATABASES variable
Eh bien, jetez un œil à ce projet Github: https://github.com/mrts/docker-postgresql-multiple-databases
Selon la documentation officielle des images de docker postgres:
Si vous souhaitez effectuer une initialisation supplémentaire dans une image dérivée de celle-ci, ajoutez un ou plusieurs scripts * .sql, * .sql.gz ou * .sh sous /docker-entrypoint-initdb.d (création du répertoire si nécessaire ). Une fois que le point d'entrée a appelé initdb pour créer l'utilisateur et la base de données postgres par défaut, il exécute tous les fichiers * .sql et source tous les scripts * .sh trouvés dans ce répertoire pour effectuer une initialisation supplémentaire avant de démarrer le service.
Vous trouverez le script préparé sur ce dépôt que vous pourriez utiliser.