如何防止数据库docker被重build并丢失生产数据
我喜欢在开发和生产环境中使用docker和docker-compose。
但在我的工作stream程中,我一直将docker工人视为一次性的 :
这意味着如果我需要添加一个function到我的docker,我编辑我的Dockerfile
,然后运行docker-compose build
和docker-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议您阅读这个主题。 这是一个很好的文章解释这样做的危险。