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.