我可以从现有数据库容器构建docker镜像吗?

时间:2016-10-13 20:40:42

标签: postgresql docker docker-compose

我是码头工人的新手。我正在使用docker compose来管理容器。

我的目标是让数据库容器持久化或不持久化数据,这可以由其他开发人员在没有很多手动步骤(pg_dump和pg_store等)的情况下提取,以在本地运行他们的开发环境。

我想知道我是否可以构建数据库快照的docker镜像(postgres)。这可能吗?如果没有,推荐使用docker的方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:5)

在泊坞窗中,您可以基本上将数据保存在两个地方:

  1. 在容器内(默认)
  2. 数据库容器配置为在卷中保存数据,因为通过这种方式,数据可以在容器删除后继续存在。它也更快。从容器创建映像时,卷中的数据将无法进入。

    但是您可以创建一个具有 archive 脚本的数据库容器,该脚本将执行pg_dumpcp并将结果保存在任何已安装卷之外的任何目录中。因此,数据将位于容器内,并可以飞出图像。

    然后使用docker commit <container id>将更改保存到新图像。标记新图片docker tag <image id> registry/postgres:withdata并执行docker push

    Dockerfile中包含一个在数据库启动后检查它是否为空的脚本。如果为空,请使用容器中的pg_restorecp将其恢复。

    嗯,这只是一个想法,给你一点路线。这是可能的,只需要一点点工作。

    此致