Opsæt en database dump mount
Du skal montere lossepladsen i beholderen, så du kan få adgang til den. Noget som dette i docker-compose.yml:
db:
volumes:
- './db_dump:/db_dump'
Lav en lokal mappe med navnet db_dump
og placer din db_dump.gz
fil der.
Start databasebeholderen
Brug POSTGRES_DB
i miljøet (som du nævnte i dit spørgsmål) for automatisk at oprette databasen. Start db
af sig selv uden rails-serveren.
docker-compose up -d db
Importér data
Vent et par sekunder, indtil databasen er tilgængelig. Importer derefter dine 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 også bare lave et script for at udføre denne import, sætte det fast i dit billede og derefter bruge en enkelt docker-compose-kommando til at kalde det. Eller du kan få dit entrypoint-script til at tjekke, om en dump-fil er til stede, og i så fald udpakke den og importere den... hvad end du skal gøre.
Start rails-serveren
docker-compose up -d web
Automatisk dette
Hvis du gør dette i hånden for at forberede en ny opsætning, så er du færdig. Hvis du har brug for at automatisere dette til en værktøjskæde, kan du gøre nogle af disse ting i et script. Bare start containerne separat, lav db-importen ind imellem, og brug sleep
for at dække eventuelle opstartsforsinkelser.