Suivant l'image docker postgres officielle vous pouvez mettre en place un point d'entrée où vous placez vos scripts d'initialisation.
Cela fonctionne bien. Pour le développement/testing, je veux une base de données propre sur chaque le démarrage du conteneur, et pas seulement lors de son premier.
Tous les scripts à l'intérieur de l'interface docker-entrypoint-initdb.d
sont uniquement exécutées une fois (la première fois que le conteneur est démarré).
Existe-t-il un moyen simple d'exécuter le script à chaque fois que le conteneur est démarré via docker-compose
?
J'ai mis DROP TABLE IF EXISTS
devant chaque CREATE TABLE
donc le .sql
script fonctionnera même sur un nouveau démarrage.
Partie pertinente du docker-compose si quelqu'un en a besoin :
postgres-myname:
image: postgres:12.1-alpine
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres-db
ports:
- "54320:5432"
build:
context: .
dockerfile: postgresql-config/Dockerfile
networks:
- my-network