PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Errore:importazione del database Postgres nel contenitore Docker

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.