gpt4 book ai didi

postgresql - 当docker容器未启动时如何在docker中恢复postgres数据库?

转载 作者:行者123 更新时间:2023-12-02 18:17:46 33 4
gpt4 key购买 nike

我想在 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 容器数据库创建和恢复备份时,这两项工作同时完成,意味着在创建容器时。
我怎样才能做到这一点?

最佳答案

But my requirement is when I run the command for create the dockercontainer database creation and restore the backup both work done insame time, mean at the time of container creation.


这两个任务都可以由 Docker 容器执行,您只需将恢复脚本放在 docker-entrypoint-initdb.d 中即可。文件夹。
COPY createTable.sql /docker-entrypoint-initdb.d/a_createTable.sql
COPY backup_latest.sql /docker-entrypoint-initdb.d/
当我改变时 createTable.sqla_createTable.sql ,因此它将首先创建表,然后将恢复备份。

These initialization files will be executed in sorted name order asdefined by the current locale


Initialization scripts
或者另一种选择是创建单个 SQL 文件,顺序为
ALL DDL 
# then
ALL DML
所以像
COPY db.sql /docker-entrypoint-initdb.d/

关于postgresql - 当docker容器未启动时如何在docker中恢复postgres数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62929690/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com