Configurer un montage de vidage de base de données
Vous devrez monter le vidage dans le conteneur pour pouvoir y accéder. Quelque chose comme ça dans docker-compose.yml :
db:
volumes:
- './db_dump:/db_dump'
Créez un répertoire local nommé db_dump
et placez votre db_dump.gz
déposez-y.
Démarrer le conteneur de base de données
Utilisez POSTGRES_DB
dans l'environnement (comme vous l'avez mentionné dans votre question) pour créer automatiquement la base de données. Démarrer db
par lui-même, sans le serveur rails.
docker-compose up -d db
Importer des données
Attendez quelques secondes que la base de données soit disponible. Ensuite, importez vos données.
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
Vous pouvez également simplement créer un script pour effectuer cette importation, le coller dans votre image, puis utiliser une seule commande docker-compose pour l'appeler. Ou vous pouvez demander à votre script de point d'entrée de vérifier si un fichier de vidage est présent, et si c'est le cas, décompressez-le et importez-le... tout ce que vous devez faire.
Démarrer le serveur rails
docker-compose up -d web
Automatiser cela
Si vous faites cela à la main pour la préparation d'une nouvelle configuration, alors vous avez terminé. Si vous avez besoin d'automatiser cela dans une chaîne d'outils, vous pouvez faire certaines de ces choses dans un script. Démarrez simplement les conteneurs séparément, en effectuant l'importation de la base de données entre les deux et utilisez sleep
pour couvrir tout retard de démarrage.