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

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

但在我的工作stream程中,我一直将docker工人视为一次性的

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

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

我仍然需要在我的环境中进行一些更改(例如configuration备份),但是现在我不能重新运行docker-compose build因为这意味着所有数据都将丢失 。这意味着我需要inputdocker docker-compose run web /bin/bash ),然后运行里面的命令,同时将这些命令报告给我的本地Dockerfile以跟踪我的更改。

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

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

我想让Docker不会被破坏(怎么样?),尽pipe这意味着丢失一个容器的可处置性。

我想有一个专门的分区, 负责存储数据,在重builddocker时不会被破坏,尽pipe安装和解密都很困难。

所以呢?

谢谢

这是数据卷的用途。 Docker文档站点上有一整个页面 。

这个想法是,当你摧毁容器时,数据卷会持续存在数据,当你重新启动数据时,数据并没有消失。 但是我会说,将数据库放入Docker容器是很困难的 。 人们做到了,数据严重,严重失业。

在将您的生产数据信任到Docker容器之前,我build议您阅读这个主题。 这是一个很好的文章解释这样做的危险。