Imposta un montaggio del dump del database
Dovrai montare il dump nel contenitore in modo da potervi accedere. Qualcosa del genere in docker-compose.yml:
db:
volumes:
- './db_dump:/db_dump'
Crea una directory locale denominata db_dump
e inserisci il tuo db_dump.gz
file lì.
Avvia il contenitore del database
Usa POSTGRES_DB
nell'ambiente (come hai menzionato nella tua domanda) per creare automaticamente il database. Avvia db
da solo, senza il server rails.
docker-compose up -d db
Importa dati
Attendere alcuni secondi affinché il database sia disponibile. Quindi, importa i tuoi dati.
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
Puoi anche semplicemente creare uno script per eseguire questa importazione, incollarlo nella tua immagine e quindi utilizzare un singolo comando docker-compose per chiamarlo. Oppure puoi fare in modo che il tuo script entrypoint controlli se è presente un file dump e, in tal caso, decomprimilo e importalo... qualunque cosa tu debba fare.
Avvia il server Rails
docker-compose up -d web
Automatizzazione
Se lo stai facendo a mano per la preparazione di una nuova configurazione, il gioco è fatto. Se hai bisogno di automatizzarlo in una toolchain, puoi fare alcune di queste cose in uno script. Avvia semplicemente i contenitori separatamente, facendo l'importazione db nel mezzo e usa sleep
per coprire eventuali ritardi di avvio.