2016-09-01 2 views
0

나는 쉘 스크립트 taht를에서 pg_restore의를 사용하여 PostgreSQL을 고정 표시기 컨테이너에서 데이터베이스를 복원하려고은 "오류가 .I 오류 다음 무엇입니까 고정 표시기 파일에서 호출되는 고정 표시기 테이블의 자동 분석 'tablename' ".pg_restore의 컨테이너

DockerFile :

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 

initialize.sh

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

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

로그 :

server started 
    CREATE DATABASE 
    /docker-entrypoint.sh: running /docker-entrypoint-initdb.d/initialize.sh 
    ++ echo '******PostgreSQL initialisation******' 
    ++ pg_restore -C -d Clarion1 /var/lib/postgresql/backup/Clarion53.backup 
    ******PostgreSQL initialisation****** 
    ERROR: canceling autovacuum task 

B ut은 동일한 백업 파일에서 호스트 컴퓨터의 명령 프롬프트에서 DB를 복원하려고하면 정상적으로 작동합니다.

+0

복원을 실행하기 전에 데이터베이스가 완전히 초기화 될 때까지 기다려야 할 것 같습니다. – dnephin

답변

1

초기화 단계에서 백업 복원을 수행 할 수 있다고 생각하지 않습니다. 컨테이너를 시작한 다음 db를 업로드하십시오.

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