如何防止重建数据库docker并丢失生产数据

时间:2017-02-10 09:54:19

标签: database docker docker-compose

我喜欢使用docker& docker-compose适用于开发和生产环境。

但在我的工作流程中,我一直将码头工人视为一次性

这意味着如果我需要向Docker添加功能,我会编辑Dockerfile,然后运行docker-compose builddocker-compose up -d并完成。

但这一次,生产数据库也在Docker中。

我仍然需要在我的环境中进行一些更改(例如配置备份),但现在我无法重新运行docker-compose build因为这意味着丢失了所有数据 ...这意味着我需要进入泊坞窗(docker-compose run web /bin/bash)并在其中运行命令,同时仍然向我的本地Dockerfile报告这些命令以跟踪我的更改。

有关这种情况的最佳做法吗?

我想过设置一个在容器销毁之前将数据库转储到S3存储桶的进程,但它并没有真正扩展到广泛的数据库......

我想让Docker不可破坏(如何?),但这意味着丢失了容器的可处置性。

我想过有一个特殊的分区,负责存储数据 ,并且在重建docker时不会被破坏,尽管设置起来很困难并且不安全。

那又怎样?

由于

1 个答案:

答案 0 :(得分:7)

这就是数据量的用途。 docker文档站点上有一个whole page,其中包含此内容。

这个想法是当你销毁容器时,数据量会随着数据一直存在,当你重新启动它时,数据就没有消失。 我会说,将数据库放入docker容器中 hard 。人们已经做到了,并且有严重的数据和严重的失业。

在将您的生产数据信任到docker容器之前,我建议您仔细阅读此主题。 This是一篇很棒的文章,解释了这样做的危险。