Du tilsidesætter den originale command
og du starter ikke postgres i dette script, hvorfor din database ikke er tilgængelig.
Du kan placere din databaseinitialisering i containerens indgangsbibliotek:/docker-entrypoint-initdb.d
. Dette udfører alle *.sh
og *.sql
filer i denne mappe og rører ikke den originale command
.
Alle filer i denne mappe udføres automatisk i alfabetisk rækkefølge ved oprettelse af container . Opret derfor en volumen for at tilføje dine scripts/sql-filer til indgangspunktet og lad containeren udføre dem. Dette er beskrevet i den officielle postgres-dokumentation, afsnittet "Sådan udvides dette billede"
.
Din skrivefil ændres derefter til noget som dette:
postgres:
build: ./postgres
volumes:
- /shared_folder/postgresql:/var/lib/postgresql
- ./db-init-scripts:/docker-entrypoint-initdb.d
ports:
- "5432:5432"
hvorimod en lokal telefonbog, f.eks. db-init-scripts
, indeholder dine initialiseringsscripts (omdøb det, hvis du vil). Kopiér create_db.sh
til denne mappe, og den vil automatisk blive udført, når du opretter en ny container.
Adskillige database-billeder ser denne entrypoint-mappe, hvilket er meget praktisk.
Dit container_name: postgres
virker overflødig.