Een databasedump-mount instellen
U moet de dump in de container monteren zodat u er toegang toe hebt. Iets als dit in docker-compose.yml:
db:
volumes:
- './db_dump:/db_dump'
Maak een lokale map met de naam db_dump
en plaats uw db_dump.gz
bestand daar.
Start de databasecontainer
Gebruik POSTGRES_DB
in de omgeving (zoals u in uw vraag hebt vermeld) om de database automatisch te maken. Start db
op zichzelf, zonder de rails-server.
docker-compose up -d db
Gegevens importeren
Wacht een paar seconden totdat de database beschikbaar is. Importeer vervolgens uw gegevens.
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
Je kunt ook gewoon een script maken om deze import te doen, dat in je afbeelding plakken en dan een enkele docker-compose-opdracht gebruiken om dat aan te roepen. Of je kunt je entrypoint-script laten controleren of er een dumpbestand aanwezig is, en zo ja, pak het uit en importeer het... wat je ook moet doen.
Start de rails-server
docker-compose up -d web
Dit automatiseren
Als je dit met de hand doet voor het voorbereiden van een nieuwe setup, dan ben je klaar. Als u dit in een toolchain moet automatiseren, kunt u sommige van deze dingen in een script doen. Start gewoon de containers afzonderlijk, voer tussendoor de db-import uit en gebruik sleep
om eventuele opstartvertragingen te dekken.