qui*_*tin 5 wordpress docker kubernetes
如果我在 Kubernetes 环境中运行 Wordpress,其中代码是 Docker 映像的一部分,并且有人尝试通过 Wordpress 管理员添加插件,我认为这不会很好地工作,因为只会安装该插件在他们添加插件时命中的容器上,对吗?
我将代码构建到图像中的方法是错误的吗?我考虑过的另一种方法是保存代码的卷,它可以很好地处理这个用例。是否有关于我可以在某处阅读的此类内容的讨论?
假设您需要允许 WordPress 用户安装/升级插件,则在 Docker 映像中刻录 WordPress 是行不通的:您要么允许仅通过分发新的 docker 映像来更新应用程序,要么不允许。您想要做的事情允许应用程序更新来自两个来源。
\n\n如果您没有这样的要求,只需添加:
\n\ndefine(\xe2\x80\x98DISALLOW_FILE_MODS\xe2\x80\x99,true);\nRun Code Online (Sandbox Code Playgroud)\n\n到 wp-config.php 就可以了。\n确保当您使用新版本的 Wordpress 升级 Docker 映像时,数据库架构也会相应升级,并且当前正在执行的所有版本的 Wordpress 都可以使用该数据库架构。
\n\n如果您无法禁用插件安装/更新,则需要解决两个问题:
\n\n1) 您需要让所有容器访问相同的 WordPress 安装。
\n\n容器中的磁盘文件是短暂的,这意味着当容器崩溃时,kubelet 会重新启动它,但文件将会丢失 - 每次您都会重新开始。
\n\n此问题的典型解决方案是创建一个卷来存储您的 WordPress 安装并将其安装到 Pod 中的所有容器上,如下所示:
\n\nvolumes:\n - name: wp-webroot\n emptyDir: {}\n\n- name: wp-container\n image: wp\n volumeMounts:\n - name: wp-webroot\n mountPath: /var/www/html\n\n- name: wp-container2\n image: wp\n volumeMounts:\n - name: wp-webroot\n mountPath: /var/www/html\nRun Code Online (Sandbox Code Playgroud)\n\n更多信息:
\n\n\n\n2) 您需要使共享卷的存储可靠/冗余。\nKubernetes 提供了许多选项,这些选项根据运行 Kubernetes 安装的位置而有所不同。\n如果您位于公共云中,请使用云提供的任何可用选项(例如 EFS)在 AWS 上),如果您在本地,您可能需要研究 glusterfs,或者如果您有现有的 SAN,请使用它。
\n\n更多信息: https: //kubernetes.io/docs/concepts/storage/volumes/
\n\n关于您对有关该主题的一些参考书目的请求,您会发现许多文档告诉您您的应用程序应该是图像的一部分,例如第 7 点:
\n\nhttps://developers.redhat.com/blog/2016/02/24/10-things-to-avoid-in-docker-containers/
\n\n但同样,这假设应用程序只能由管理员升级/修改,而最终用户不能。您必须将在网上找到的建议与您的具体要求结合起来。
\n| 归档时间: |
|
| 查看次数: |
1073 次 |
| 最近记录: |