sql >> Database >  >> RDS >> PostgreSQL

docker postgres met initiële gegevens wordt niet bewaard tijdens commits

Het probleem is dat de postgres Dockerfile "/var/lib/postgresql/data" als een volume declareert. Dit is een gewone map die zich buiten het Union File System bevindt dat door afbeeldingen wordt gebruikt. Volumes blijven bestaan ​​totdat er geen containers naar zijn gelinkt en ze expliciet worden verwijderd.

Je hebt een paar keuzes:

  • Gebruik de --volumes-from opdracht om gegevens te delen met nieuwe containers. Dit werkt alleen als er maar één postgres-image tegelijk actief is, maar het is de beste oplossing.
  • Schrijf uw eigen Docker-bestand dat de gegevens maakt voordat u het volume declareert. Deze gegevens worden vervolgens naar het volume gekopieerd wanneer de container wordt gemaakt.
  • Schrijf een ingangspunt of cmd-script dat de database tijdens runtime vult.

Voor al deze suggesties moet u Volumes gebruiken om de gegevens te beheren zodra de container wordt uitgevoerd. Als alternatief kunt u uw eigen Dockerfile schrijven en gewoon geen volume declareren. Je zou dan docker commit kunnen gebruiken om een ​​nieuwe afbeelding te maken na het toevoegen van gegevens. Dit zal waarschijnlijk op korte termijn werken, maar dit is zeker niet hoe u met containers zou moeten werken - het is niet herhaalbaar en u zult uiteindelijk geen lagen meer hebben in het Union File System.

Bekijk de officiële Docker-documenten over het beheren van gegevens in containers voor meer informatie.



  1. Digitale transformatie:het begint allemaal met datadenken

  2. Tekensets en sorteringen in MySQL begrijpen

  3. Hoe MySQL Workbench op Windows te installeren

  4. Ontvang de eerste maandag van een maand in SQLite