Je voudrais avoir un moyen d'entrer dans le conteneur Postgresql et obtenir un vidage de données à partir de celui-ci.
Utilisez la commande suivante depuis un terminal UNIX:
docker exec <container_name> pg_dump <schema_name> > backup
La commande suivante exportera uniquement les insertions de toutes les tables:
docker exec <container_name> pg_dump --column-inserts --data-only <schema_name> > inserts.sql
J'ai un conteneur nommé postgres avec volume monté -v /backups:/backups
Pour sauvegarder une base de données gziped my_db I use:
docker exec postgres pg_dump -U postgres -F t my_db | gzip >/backups/my_db-$(date +%Y-%m-%d).tar.gz
Maintenant j'ai
user@my-server:/backups$ ls
my_db-2016-11-30.tar.gz
Bien que la solution de point de montage ci-dessus semblait prometteuse, voici la seule solution qui a fonctionné pour moi après plusieurs itérations:
docker run -it -e PGPASSWORD=my_password postgres:Alpine pg_dump -h hostname -U my_user my_db > backup.sql
Ce qui était unique dans mon cas: j'ai un mot de passe sur la base de données qui doit être transmis; nécessaire pour passer l'étiquette (Alpine); et enfin la version hôtes des outils psql était différente des versions de docker.
Une autre méthode consiste à démarrer postgre sql avec un point de montage à l'emplacement du dump dans le menu fixe.
comme docker run -v <location of the files>
. Ensuite, effectuez une inspection de docker sur le conteneur en cours d'exécution de docker
docker inspect <image_id>
vous pouvez trouver la balise "Volumes" à l'intérieur et un emplacement correspondant. Allez à l'emplacement et vous pouvez trouver tous les fichiers postgresql/mysql.Il a fonctionné pour moi.Laissez-nous savoir si cela a également fonctionné pour vous.
Bonne chance
Pour exécuter le conteneur avec l'utilisateur et le mot de passe Postgres, vous devez avoir des variables préconfigurées en tant que variable d'environnement de conteneur. Par exemple:
docker run -it --rm --link <container_name>:<data_container_name> -e POSTGRES_PASSWORD=<password> postgres /usr/bin/pg_dump -h <data_container_name> -d <database_name> -U <postgres_username> > dump.sql