![](/img/trans.png)
[英]how to restore postgres database in docker when docker container not start?
[英]Restore a Postgresql database into a Docker container so when Postgres starts up the DB is in place
我有一個 Postgresql 數據轉儲文件。 當我 docker 運行 postgresql 容器時,如何以還原就位的方式將該備份還原到僅數據容器中?
作為#1 penaltizes答案這太簡潔我重復一下寫有:
最簡單的方法是在主機上的單獨文件夾中創建一個空的 postgresql 數據庫,然后啟動 PostgreSQL 守護進程,然后導入數據,然后簡單地將其掛載到容器中。 使用下面的腳本,您可以在/tmp/postgres-mem
文件夾中創建數據庫,然后將數據導入其中。
#!/bin/bash
export PGDIR=/tmp/postgres-mem
pg_ctl -D "$PGDIR" stop
rm -vfr "$PGDIR"
mkdir "$PGDIR"
pg_ctl init -D "$PGDIR"
pg_ctl -D "$PGDIR" start -o "-h localhost -c fsync=off -c synchronous_commit=off -c full_page_writes=off -c log_destination='stderr' -c logging_collector=on -c log_directory='pg_log' -c log_filename='postgresql-%Y-%m-%d_%H%M%S.log' -c log_statement='all' -k /tmp/postgres-mem"
sleep 3
psql -h localhost -c 'create user cooluser with superuser' template1
psql -h localhost -c 'create database "whatever"' template1
然后
psql -U cooluser whatever < your_dump_file.sql
然后將 /tmp/postgres-mem 的內容復制到數據容器中
但是,您可能需要考慮這種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.