我是码头工人的新手。我正在使用docker compose来管理容器。
我的目标是让数据库容器持久化或不持久化数据,这可以由其他开发人员在没有很多手动步骤(pg_dump和pg_store等)的情况下提取,以在本地运行他们的开发环境。
我想知道我是否可以构建数据库快照的docker镜像(postgres)。这可能吗?如果没有,推荐使用docker的方法是什么?
谢谢。
答案 0 :(得分:5)
在泊坞窗中,您可以基本上将数据保存在两个地方:
数据库容器配置为在卷中保存数据,因为通过这种方式,数据可以在容器删除后继续存在。它也更快。从容器创建映像时,卷中的数据将无法进入。
但是您可以创建一个具有 archive 脚本的数据库容器,该脚本将执行pg_dump
或cp
并将结果保存在任何已安装卷之外的任何目录中。因此,数据将位于容器内,并可以飞出图像。
然后使用docker commit <container id>
将更改保存到新图像。标记新图片docker tag <image id> registry/postgres:withdata
并执行docker push
。
在Dockerfile
中包含一个在数据库启动后检查它是否为空的脚本。如果为空,请使用容器中的pg_restore
或cp
将其恢复。
嗯,这只是一个想法,给你一点路线。这是可能的,只需要一点点工作。
此致