sql >> Database teknologi >  >> RDS >> PostgreSQL

Kør script efter containerens indgangspunkt i docker-compose

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.




  1. ExecuteScalar kaster NullReferenceException

  2. Sådan krypterer du en kolonne i Postgres ved hjælp af Hibernate @ColumnTransformer

  3. Vælg fra en tabel ved hjælp af en reference fra en sammenkædet tabel (Join in a Join?)

  4. Kan ikke oprette forbindelse til Oracle ved hjælp af tns