sql >> Databasteknik >  >> RDS >> PostgreSQL

Fel:Postgres-databasimport i docker-container

Konfigurera en databasdumpmontering

Du måste montera soptippen i behållaren så att du kan komma åt den. Något så här i docker-compose.yml:

db:
  volumes:
    - './db_dump:/db_dump'

Skapa en lokal katalog med namnet db_dump och placera din db_dump.gz fil där.

Starta databasbehållaren

Använd POSTGRES_DB i miljön (som du nämnde i din fråga) för att automatiskt skapa databasen. Starta db av sig själv, utan rails-servern.

docker-compose up -d db

Importera data

Vänta några sekunder tills databasen är tillgänglig. Importera sedan dina data.

docker-compose exec db gunzip /db_dump/db_dump.gz
docker-compose exec db psql -U postgres -d dbname -f /db_dump/db_dump.gz
docker-compose exec db rm -f /db_dump/db_dump.gz

Du kan också bara skapa ett skript för att göra denna import, fästa det i din bild och sedan använda ett enda docker-compose-kommando för att anropa det. Eller så kan du låta ditt entrypoint-skript kontrollera om en dumpfil finns, och i så fall packa upp den och importera den... vad du än behöver göra.

Starta rails-servern

docker-compose up -d web

Automatiskt detta

Om du gör detta för hand för att förbereda en ny installation, då är du klar. Om du behöver automatisera detta till en verktygskedja kan du göra en del av det här i ett skript. Starta bara behållarna separat, gör db-importen däremellan och använd sleep för att täcka eventuella startförseningar.



  1. ORA-12728:ogiltigt intervall i reguljärt uttryck

  2. Referensvärde för seriell kolumn i en annan kolumn under samma INSERT

  3. Heltalsordning med flera kolumner

  4. Anslut till Oracle DB med sqlplus