postgres docker容器中的pg_restore

时间:2016-09-01 09:11:59

标签: postgresql docker dockerfile

我正在尝试使用pg_restore恢复PostgreSQL docker容器中的数据库,这将从docker文件中调用。我将收到以下错误"错误:取消autovacuum任务 背景:自动分析表' tablename'"

DockerFile:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="popup">
<div class="name">Child Popup</div>
</div>
<div id="parant">
  <div class="name">Parant Popup</div>
<button id="popup-btn">POPUP</button>
</div>

initialize.sh

    FROM postgres:9.3
    ENV POSTGRES_USER postgres
    ENV POSTGRES_PASSWORD Abcd1234
    ENV POSTGRES_DB Clarion1
    COPY DB.backup /var/lib/postgresql/backup/DB.backup
    COPY initialize.sh /docker-entrypoint-initdb.d/initialize.sh

日志:

    #!/bin/bash
    set -e
    set -x

    echo "******PostgreSQL initialisation******"
    pg_restore -C -d DB /var/lib/postgresql/backup/DB.backup

但是,如果我尝试从主机中的命令提示符从同一个备份文件恢复数据库,它可以正常工作。

2 个答案:

答案 0 :(得分:3)

我不认为备份恢复可以在初始化阶段完成。启动容器,然后上传数据库。

docker run -d --name mydb mypgimage
docker exec mydb sh -c "pg_restore -C -d DB /var/lib/postgresql/backup/DB.backup"

答案 1 :(得分:2)

这是一种从主机上文件还原的方法:

docker exec -i container_name pg_restore -U postgres_user -v -d database_name < /dir_backup_outside_container/file_name.tar