docker 및 postgres에 대한 질문이 있습니다. 도커가 시작될 때마다 새 postgres 데이터베이스를 설정하고 주어진 덤프를 가져 오려고합니다.Docker-Compose Postgresql 가져 오기 덤프
내 문제처럼,하지만 대답은 나를 위해 충분하지 않습니다 : Docker postgres does not run init file in docker-entrypoint-initdb.d
도커 - 작성 :
postgres:
environment:
- POSTGRES_USER=****
- POSTGRES_PASSWORD=****
- POSTGRES_DB=****
build:
context: .
dockerfile: dockerfile-postgres
내 Dockerfile : (나는 보통 .sh가 끝나는 스크립트로 이미 그것을 시도)
FROM postgres
ADD dump.sql /docker-entrypoint-initdb.d/
https://hub.docker.com/_/postgres/에 따라 데이터베이스를 가져 오기 위해서는 dump.sql을 사용해야합니다. 고정 표시기를 사용하여 응용 프로그램을 시작
는만을 제공합니다
postgres_1 | LOG: invalid record length at 0/1708600
postgres_1 | LOG: redo is not required
postgres_1 | LOG: MultiXact member wraparound protections are now enabled
postgres_1 | LOG: database system is ready to accept connections
postgres_1 | LOG: autovacuum launcher started
내 데이터베이스 반입 된 경우, 내 데이터베이스에는 테이블이없는 시험 외에. 내가 뭘 잘못하고 있는거야 (파일을 대상 시스템에서 읽고 실행할 수 있습니까?) psql로 가져 오기는 아무런 문제가 없으므로 덤프가 정확합니다.
내가 도와 주시면 감사하겠습니다.
[ADD]는 [Docker COPY vs ADD] (http://stackoverflow.com/questions/24958140/docker-copy-vs-add)와 같이 URL 일 때만 마술을 실행합니다. 논의했다. 'pr_restore'를 실행하고'dump.sql' 복사본의 경로를 지정 하시겠습니까? ...하지만 어쩌면'pg_restore'는 postgres docker 허브 페이지에서 18 일 전의 주석으로 컨테이너 형식으로 작동하지 않습니다. – Dilettant
예를 들어 Copy to에 대해 생각하고 같은 결과를 시도했습니다. 파일이 올바르게 대상입니다. 나는 이미이 폴더에 pqdump와 sh 스크립트를 시도했다. 스크립트는 다음을 호출해야합니다. pg_restore -d databasename /tmp/dump.backup. pg_restore 자체가 대상 컴퓨터에서 작동했지만 스크립트가 실행되고 있지 않습니다. – Simon
pg_restore는 내가 원하는 것입니다. DB에있는 내용을 덤프하지는 않지만 다시 채우십시오. – Dilettant