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

docker postgres med indledende data er ikke persisted over commits

Problemet er, at postgres Dockerfile erklærer "/var/lib/postgresql/data" som et volumen. Dette er bare en normal mappe, der lever uden for Union File System, der bruges af billeder. Binderne lever indtil ingen containere linker til dem, og de er eksplicit slettet.

Du har et par valgmuligheder:

  • Brug --volumes-from kommando til at dele data med nye containere. Dette virker kun, hvis der kun er ét kørende postgres-billede ad gangen, men det er den bedste løsning.
  • Skriv din egen Dockerfile, som opretter dataene, før du erklærer volumen. Disse data vil derefter blive kopieret til volumen, når beholderen oprettes.
  • Skriv et indgangs- eller cmd-script, som udfylder databasen under kørsel.

Alle disse forslag kræver, at du bruger Volumes til at administrere dataene, når containeren kører. Alternativt kan du skrive din egen Dockerfile og simpelthen ikke erklære et volumen. Du kan derefter bruge docker commit for at oprette et nyt billede efter tilføjelse af data. Dette vil sandsynligvis fungere på kort sigt, men det er bestemt ikke sådan, du skal arbejde med containere - det kan ikke gentages, og du vil til sidst løbe tør for lag i Union File System.

Tag et kig på de officielle Docker-dokumenter om administration af data i containere for at få flere oplysninger.



  1. Mål databaseydeevne under pres

  2. Sådan indsætter du data direkte fra Excel til Oracle Database

  3. beregne en sum af typen tid ved hjælp af sql

  4. SQL - Hvordan gemmer og navigerer man i hierarkier?