我喜欢使用docker& docker-compose适用于开发和生产环境。
但在我的工作流程中,我一直将码头工人视为一次性:
这意味着如果我需要向Docker添加功能,我会编辑Dockerfile
,然后运行docker-compose build
和docker-compose up -d
并完成。
但这一次,生产数据库也在Docker中。
我仍然需要在我的环境中进行一些更改(例如配置备份),但现在我无法重新运行docker-compose build
因为这意味着丢失了所有数据 ...这意味着我需要进入泊坞窗(docker-compose run web /bin/bash
)并在其中运行命令,同时仍然向我的本地Dockerfile
报告这些命令以跟踪我的更改。
有关这种情况的最佳做法吗?
我想过设置一个在容器销毁之前将数据库转储到S3存储桶的进程,但它并没有真正扩展到广泛的数据库......
我想让Docker不可破坏(如何?),但这意味着丢失了容器的可处置性。
我想过有一个特殊的分区,负责存储数据 ,并且在重建docker时不会被破坏,尽管设置起来很困难并且不安全。
那又怎样?
由于
答案 0 :(得分:7)
这就是数据量的用途。 docker文档站点上有一个whole page,其中包含此内容。
这个想法是当你销毁容器时,数据量会随着数据一直存在,当你重新启动它时,数据就没有消失。 我会说,将数据库放入docker容器中 hard 。人们已经做到了,并且有严重的数据和严重的失业。
在将您的生产数据信任到docker容器之前,我建议您仔细阅读此主题。 This是一篇很棒的文章,解释了这样做的危险。