持久化 dockerized WordPress(具有 LAMP 堆栈)

Persisting a dockerized WordPress (with LAMP stack)

我正在努力将我的 WordPress 博客从传统设置迁移到 Docker,但是我在理解什么是持久保存数据的最佳方式时遇到了一些麻烦。

简而言之,我的想法是让每个博客 运行 都在自己的容器中(基于 tutum/wordpress)。在测试期间,我注意到如果我在博客上保存任何数据,当我提交容器时,图像不包含此类数据。据我了解 Docker 应该在提交新图像时保存容器的状态。这是当我 运行 命令或在容器上安装包时发生的情况,但是当我,例如,在 WordPress 中创建一个新的 post 时,不知何故不会发生。

我已经阅读了一些关于 Docker 卷的内容,但是我认为拥有一个单独的数据卷不是很方便,因为我更喜欢将所有数据放在一个容器中,这样我就可以更容易四处走动。

有什么我遗漏的吗?是什么阻止 Docker 在 WordPress 中保存新的 post?

谢谢大家的宝贵时间!

tutum/wordpress 的 Dockerfile 基于 tutum:lamp,它在 /etc/mysql/var/lib/mysql 处声明了一个卷。所以,如果你使用那个图像,不管你喜欢与否,你都会有体积。因为卷中的数据存在于联合文件系统之外,所以它不会被 docker commit 命令保存。

如果您真的不想使用卷,您可以编写自己的 Dockerfile 而不使用卷语句。然而,这真的不会很好地工作——每次你想保存 wordpress 的状态时,你都必须提交一个新图像,该图像将建立在最后一个图像之上。除了烦人和笨拙之外,您最终会达到图像中允许的最大层数。

相反,恐怕您将不得不处理大量数据。这并不像您想象的那么糟糕——您只需压缩卷目录并将其解压缩到一个新卷中即可。最大的优势是您可以将可变和变化的数据与可以单独更新和更改的应用程序代码分开。