Je overschrijft het originele command
en je start postgres niet in dit script, daarom is je database niet beschikbaar.
U kunt uw database-initialisatie in de entrypointdirectory van de container plaatsen:/docker-entrypoint-initdb.d
. Dit voert alle *.sh
. uit en *.sql
bestanden in deze map en raakt het originele command
. niet aan .
Alle bestanden in deze map worden automatisch uitgevoerd in alfabetische volgorde bij het maken van containers . Maak daarom een volume om uw scripts / sql-bestanden aan het ingangspunt toe te voegen en laat de container ze uitvoeren. Dit wordt beschreven in de officiële postgres-documentatie, sectie "Hoe deze afbeelding uit te breiden"
.
Je opstelbestand verandert dan in zoiets als dit:
postgres:
build: ./postgres
volumes:
- /shared_folder/postgresql:/var/lib/postgresql
- ./db-init-scripts:/docker-entrypoint-initdb.d
ports:
- "5432:5432"
terwijl een lokale directory, b.v. db-init-scripts
, bevat uw initialisatiescripts (hernoem deze als u wilt). Kopieer create_db.sh
naar deze map en het wordt automatisch uitgevoerd wanneer u een nieuwe container maakt.
Verschillende database-images bekijken deze entrypoint-directory, wat erg handig is.
Uw container_name: postgres
lijkt overbodig.