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

Aug*_*ger 6 database docker docker-compose

我喜欢在开发和生产环境中使用docker和docker-compose.

但在我的工作流程中,我一直认为码头工人是一次性的:

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

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

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

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

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

我想让Docker不可破坏(怎么样?),虽然这意味着失去了容器的可处置性.

我想过有一个特殊的分区,它只负责存储数据,并且在重建docker时不会被破坏,尽管它很难设置和解除安全.

所以呢?

谢谢

jax*_*orm 9

这就是数据量的用途.docker文档站点上有一整页介绍了这一点.

我们的想法是,当您销毁容器时,数据量会持续存在,并且当您重新启动它时,数据并没有消失.我会说,将数据库放入docker容器很难.人们已经做到了,并且有严重的数据和严重的失业.

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