【问题标题】:Docker Volumes in Production - Wordpress as an example生产中的 Docker 卷 - 以 Wordpress 为例
【发布时间】:2021-05-13 01:05:42
【问题描述】:

这个问题不必专门针对 Wordpress,但我认为这是理解生产网站中概念的一个很好的例子。

我正在尝试了解在生产中使用 Docker Volumes 的正确方法。 我将讨论 3 个领域以了解最佳实践以及可能的最佳性能。

数据库
如果我为数据库创建一个命名卷,我可以公开一个端口来访问数据库。这将为我自己提供最好的性能和便利。为了安全起见,我将端口更改为 127.0.0.1:xxxx 以使其无法从服务器外部访问。

wp 内容/主题
我将管理这个目录,我对网站所做的任何更改都来自我的子主题。 如果我将它存储在一个卷中,我很难上传更改,但大多数指南建议不要在生产环境中使用绑定挂载。

wp 内容/上传
这是一个完全由 Web 服务器管理的目录。如果我为整个 web 服务器文件系统使用一个卷,那么上传一个新卷将覆盖上传目录,我将丢失 web 服务器所做的任何更改。

正如我所说,这不是 Worpdress 特有的,任何 CMS 系统都可以用作示例。主要问题是当你有想要管理的目录和 Web 服务器应该管理的目录时,如何在生产中处理 Docker?

【问题讨论】:

  • “上传新卷”是什么意思?

标签: wordpress docker volumes


【解决方案1】:

我认为您在这里忽略了要点:容器本质上是短暂的。 无论应用程序的使用情况或管理责任如何(无论是服务器还是系统管理员),任何应该比容器寿命长的数据都应该在一个卷中

在您带来的示例中,上传和主题(或整个 wp 内容)应该是卷,并且配置它们的人也应该填充它们的内容,无论是通过使用引导应用程序第二个容器,或者只是在容器启动之前将数据复制到卷中。

对于数据库,容器不需要绑定到宿主机的网络即可使用。他们可以加入一个私有网络并在那里保持彼此之间的所有通信,而无需暴露(这可以像将其绑定到 127.0.0.1 一样安全)。有关这方面的更多信息,请查看docker network docs 和一些编排工具(docker-compose、kubernetes 等)。

tl;dr 尽可能多地使用卷,以使非临时数据在容器之间保持活动状态。它们是您保持数据完好无损的唯一工具,以防您的容器失效。

【讨论】:

  • 感谢您的回复。只是为了扩展我在谈论您如何维护站点,而不仅仅是在开始时它是如何创建的。如果我想更改实时站点上的主题目录,我将如何在卷中执行此操作而不清除上传目录中上传的任何内容?
  • 我不确定是否会跟随。您可以将不同的卷设置到不同的目录并独立地与它们交互。此外,您不需要重新创建卷来更改其内容(所以我不明白为什么会擦除上传目录)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多