Restaurer une base postgreSQL de heroku dans un container docker local
Voici une démarche pour récuperer un backup d’une de vos applications heroku pour la mettre en local via docker.
Prérequis
- Avoir Docker installé : https://docs.docker.com/installation/#installation
- Une application heroku qui utilise postgresql et l’addon pgbackups
- Avoir heroku toolbelt https://toolbelt.heroku.com/
Démarche
- Lancer boot2docker (pour ceux qui ne sont pas sous linux) et avoir le shell dessus
- Installer une image postgres :
docker run -p 5432:5432 --name blog-postgres -e POSTGRES_PASSWORD=test -d postgres
- Explication de la ligne : on crée un container docker via l’image postgres qui s’appelle blog-postgres avec le mot de passe test et on redirige le port dans le host.
- Dans le repertoire de l’appli heroku :
heroku pgbackups:capture
heroku pgbackups:url
<= il faut garder le résultat de cette ligne
- Dans boot2docker, on ouvre une console dans le container :
docker exec -it "id of running container" bash
- Dans le bash fraichement ouvert :
apt-get update && apt-get install curl
curl -o latest.dump "Coller le contenu du pgbackups:url"
pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d postgres latest.dump
rm latest.dump
exit
pour sortir du bash du container postgres
Vous avez maintenant votre base postgresql dans votre container docker, accessible via un outil d’admin ou autre !