Creo copias de seguridad como esta: docker exec DOCKER pg_dump -U USER -F t DB | gzip > ./FILE.tar.gz
¿Cuál es la mejor manera de restaurar la base de datos dado que la base de datos se ejecuta dentro de un contenedor?
Para tu caso:
docker exec -it <CONTAINER> gunzip < backup.tar.gz | pg_restore -U <USER> -F t -d <DB>
La restauración remota también está disponible si su contenedor es público y se permiten conexiones remotas en pg_hba.conf
para postresql:
gunzip < backup.tar.gz | pg_restore -U <USER> -F t -d <DB> -h <HOST_IP> -p 5432
Como regla general, es una buena idea documentar sus comandos de respaldo y restauración específicos para el proyecto.
Cómo realizar una copia de seguridad de los datos que existen en el contenedor de PostgreSQL en ejecución
Crea alguna carpeta en tu raíz
mkdir -p '/myfolder/bdbackup'
descargue la imagen de postgres que está utilizando y ejecute el siguiente comando
docker run --name demo1 -e POSTGRES_PASSWORD=passowrd -v /myfolder/bdbackup:/var/lib/postgresql/data -d postgres docker exec -it demo1 psql -U postgres
La copia de seguridad se almacenará en la siguiente carpeta /myfolder/bdbackup
y una vez más vuelva a ejecutar postgres el contenedor con el mismo comando
docker run --name demo2 -e POSTGRES_PASSWORD=passowrd -v /myfolder/bdbackup:/var/lib/postgresql/data -d postgres docker exec -it demo1 psql -U postgres
y ejecute la siguiente consulta select * from emp;
se puede ver que los datos se han restaurado...