我希望在PostgreSQL中创建一个数据库,并在一个码头容器中还原一个备份。我能够创建数据库并运行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
它很好用。
但我的要求是,当我运行命令创建码头容器数据库并恢复备份时,这两个工作同时完成,这意味着在容器创建时。
我该怎么做?
发布于 2020-07-16 07:46:14
但我的要求是,当我运行命令创建码头容器数据库并恢复备份时,这两个工作同时完成,这意味着在容器创建时。
这两个任务都可以由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/
https://stackoverflow.com/questions/62929690
复制相似问题