首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当码头集装箱未启动时如何恢复码头中的postgres数据库?

当码头集装箱未启动时如何恢复码头中的postgres数据库?
EN

Stack Overflow用户
提问于 2020-07-16 07:31:42
回答 1查看 3.2K关注 0票数 2

我希望在PostgreSQL中创建一个数据库,并在一个码头容器中还原一个备份。我能够创建数据库并运行docker容器,然后运行pg_restore来恢复备份。我的Dockerfile是:

代码语言:javascript
运行
复制
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

然后运行恢复备份的命令:

代码语言:javascript
运行
复制
docker exec -i 0d96d6b59d74 pg_restore -U postgres -d docker_pg< backup_latest.sql

它很好用。

但我的要求是,当我运行命令创建码头容器数据库并恢复备份时,这两个工作同时完成,这意味着在容器创建时。

我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-16 07:46:14

但我的要求是,当我运行命令创建码头容器数据库并恢复备份时,这两个工作同时完成,这意味着在容器创建时。

这两个任务都可以由Docker容器执行,您只需将还原脚本放在docker-entrypoint-initdb.d文件夹中。

代码语言:javascript
运行
复制
COPY createTable.sql /docker-entrypoint-initdb.d/a_createTable.sql
COPY backup_latest.sql /docker-entrypoint-initdb.d/

当我将createTable.sql更改为a_createTable.sql时,它将首先创建表,然后恢复备份。

这些初始化文件将按照当前区域设置定义的排序名称顺序执行。

初始化脚本

或者另一个选项是创建单个SQL文件,顺序是

代码语言:javascript
运行
复制
ALL DDL 
# then 
ALL DML

所以就像

代码语言:javascript
运行
复制
COPY db.sql /docker-entrypoint-initdb.d/
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62929690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档