PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Erreur :Importation de la base de données Postgres dans le conteneur Docker

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.