AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 905795
Accepted
quickshiftin
quickshiftin
Asked: 2018-04-04 07:12:10 +0800 CST2018-04-04 07:12:10 +0800 CST 2018-04-04 07:12:10 +0800 CST

在 Kubernetes 上动态添加 Wordpress 插件

  • 772

如果我在 Kubernetes 环境中运行 Wordpress,其中代码是 Docker 映像的一部分,并且有人试图通过 Wordpress 管理员添加插件,我不认为这会很好,因为插件只会被安装在他们添加插件时命中的容器上,对吗?

我将代码构建到图像中的方法是失误吗?我考虑的另一种方法是保存代码的卷,它可以很好地处理这个用例。是否有关于我可以在某处阅读的此类内容的讨论?

docker
  • 1 1 个回答
  • 1347 Views

1 个回答

  • Voted
  1. Best Answer
    Luca Gibelli
    2018-04-19T00:30:33+08:002018-04-19T00:30:33+08:00

    假设您需要允许 wordpress 用户安装/升级插件,那么在 Docker 镜像中刻录 wordpress 是行不通的:要么您只允许通过分发新的 docker 镜像来更新应用程序,要么您不允许。您想要做的事情允许应用程序更新来自两个来源。

    如果您没有这样的要求,只需添加:

    define(‘DISALLOW_FILE_MODS’,true);
    

    到 wp-config.php,你很高兴。确保当您使用新版本的 Wordpress 升级 Docker 映像时,数据库架构会相应升级,并且当前正在执行的所有 Wordpress 版本都可以使用该数据库架构。

    如果您无法禁用插件安装/更新,则需要解决 2 个问题:

    1)您需要让所有容器访问相同的 wordpress 安装。

    容器中的磁盘文件是短暂的,这意味着当容器崩溃时,kubelet 会重新启动它,但文件会丢失 - 每次你得到一个干净的状态。

    这个问题的一个典型解决方案是创建一个卷来存储您的 wordpress 安装并将其安装在 Pod 中的所有容器上,如下所示:

    volumes:
      - name: wp-webroot
        emptyDir: {}
    
    - name: wp-container
        image: wp
        volumeMounts:
        - name: wp-webroot
          mountPath: /var/www/html
    
    - name: wp-container2
        image: wp
        volumeMounts:
        - name: wp-webroot
          mountPath: /var/www/html
    

    更多信息:

    https://kubernetes.io/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/

    2)您需要使共享卷的存储可靠/冗余。Kubernetes 提供了许多选项,这些选项根据您运行 Kubernetes 安装的位置而有所不同。如果您在公共云中,请使用该云提供的任何内容(例如 AWS 上的 EFS),如果您在本地,则可能需要查看 glusterfs 或者如果您有现有的 SAN,请使用它。

    更多信息:https ://kubernetes.io/docs/concepts/storage/volumes/

    关于您对该主题的一些参考书目的请求,您会发现许多文件告诉您您的应用程序应该是图像的一部分,例如第 7 点:

    https://developers.redhat.com/blog/2016/02/24/10-things-to-avoid-in-docker-containers/

    但同样,这假设应用程序只能由管理员升级/修改,而​​不是最终用户。您必须将您在网络上找到的建议与您的特定要求联系起来。

    • 2

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve