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.