2017-02-10 42 views
2

我喜欢使用docker & docker-compose适用于开发和生产环境。如何防止数据库泊坞窗被重建并丢失生产数据

但在我的工作流程,我一直在考虑码头工人为一次性

这意味着,如果我需要一个功能添加到我的搬运工,编辑我Dockerfile,然后运行docker-compose builddocker-compose up -d和完成。

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

我还需要在我的环境中某些更改(例如,配置备份),但现在我不能重新运行docker-compose build,因为这将意味着所有的数据的损失......这意味着我需要输入码头工人(docker-compose run web /bin/bash)并运行其中的命令,同时仍将其报告给我的本地Dockerfile以跟踪我的更改。

有关于这种情况的最佳实践吗?

我想建立一个进程将转储数据库到容器破坏前的S3存储的,但它并没有真正扩展到广泛的DB ...

我以为做码头工人,没有破坏的(如何?),尽管这意味着丢失容器的可处置性。

我以为有一个特殊的分区,负责存储数据只有,并且在重建Docker时不会被破坏,尽管安装和解密都很困难。

那么是什么?

谢谢

+0

我相信唯一的方法是将您的数据库安装到码头集装箱。它会将数据存储在外部,如果重建数据库容器,则不会丢失任何数据。 – Gabbax0r

回答

2

这是数据卷的用途。 Docker文档站点上有一个whole page覆盖此。

这个想法是,当你销毁容器时,数据卷会持续存在数据,当你重新启动数据时,数据并没有消失。 但我会说,把数据库放在码头集装箱中是。人们已经做到了,严重的数据丢失和严重的失业。

在将您的生产数据信任到码头集装箱之前,我建议您阅读有关此主题的大量文章。 This是一篇很好的文章,解释了这样做的危险。

+0

你到目前为止正在提出我所有的担忧。 :)我会仔细阅读并找出一个干净的解决方案,但在这种情况下,我没有选择摆脱dockerized数据库。 –

相关问题