簡體   English   中英

當 docker 容器未啟動時,如何恢復 docker 中的 postgres 數據庫?

[英]how to restore postgres database in docker when docker container not start?

我想在 PostgreSQL 中創建一個數據庫並在 docker 容器中恢復備份。 我能夠創建數據庫並運行 docker 容器,然后運行pg_restore來恢復備份。 我的 Dockerfile 是:

FROM postgres:latest

ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD 123qwe 
ENV POSTGRES_DB docker_pg 

COPY createTable.sql /docker-entrypoint-initdb.d/

VOLUME /var/lib/postgresql/data

然后我運行命令來恢復備份:

docker exec -i 0d96d6b59d74 pg_restore -U postgres -d docker_pg< backup_latest.sql

它工作正常。

但我的要求是,當我運行創建 docker 容器數據庫創建和恢復備份的命令時,這兩項工作同時完成,即在容器創建時。

我怎樣才能做到這一點?

但我的要求是當我運行創建 docker 容器數據庫創建和恢復備份的命令時,這兩項工作同時完成,意味着在容器創建時。

這兩項任務都可以由 Docker 容器執行,您只需將還原腳本放在docker-entrypoint-initdb.d文件夾中。

COPY createTable.sql /docker-entrypoint-initdb.d/a_createTable.sql
COPY backup_latest.sql /docker-entrypoint-initdb.d/

當我將createTable.sql更改為a_createTable.sql時,它將首先創建表,然后它將恢復備份。

這些初始化文件將按照當前語言環境定義的排序名稱順序執行

初始化腳本

或者另一個選項是創建單個 SQL 文件,順序為

ALL DDL 
# then 
ALL DML

所以像

COPY db.sql /docker-entrypoint-initdb.d/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM