【问题标题】:Unable to use vi editor in wordpress container无法在wordpress容器中使用vi编辑器
【发布时间】:2022-12-20 03:09:00
【问题描述】:

我一直在努力使用 WordPress 容器(在 Kubernetes 上)中的 vi 编辑器来编辑文件 wp-config.php 我目前正在使用来自 Artifactub 的 WordPress 掌舵图:https://artifacthub.io/packages/helm/bitnami/wordpress

图片:docker.io/bitnami/wordpress:6.1.1-debian-11-r1

这些是我在尝试使用 vivim 编辑 pod 内的 wp-config.php 时遇到的错误

# vi wp-config.php

bash: vi: command not found

当我尝试安装 vi 时,出现此错误:

apt-get install vi

# Error
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

然后我首先尝试通过 ssh-ing 进入托管 WordPress pod 的节点,然后使用具有 sudo 权限的 docker 执行到容器中,如下所示:

docker exec -it -u root <containerID> /bin/bash

然后我尝试在容器中安装 vi 编辑器,但仍然遇到同样的错误

我要添加到wp-config.php 的内容如下。这是一个插件要求,这样我就可以将媒体文件直接存储到我的 AWS S3 存储桶中:

define('SSU_PROVIDER', 'aws');
define('SSU_BUCKET', 'my-bucket');
define('SSU_FOLDER', 'my-folder');

我可以像这样运行命令吗:

helm install my-wordpress bitnami/wordpress \
  --set mariadb.enabled=false \
  --set externalDatabase.host=my-host \
  --set externalDatabase.user=my-user \
  --set externalDatabase.password=my-password \
  --set externalDatabase.database=mydb \
  --set wordpressExtraConfigContent="define('SSU_PROVIDER', 'aws');define('SSU_BUCKET', 'my-bucket');define('SSU_FOLDER', 'my-folder');"

【问题讨论】:

  • 建立在 wordpress 图像之上。但是你真的不应该在容器内编辑任何东西,除非你在开发环境中测试某些东西
  • 但是有没有办法可以添加/编辑wp-config.php 文件?更好的是,我如何在 WordPress 容器中使用 vi/vim。我认为在容器中使用 vi/vim 是非常标准的,如果需要,为 wordpress 开发人员更改 wp-config.php 中的配置
  • 好吧,这取决于你。在大多数情况下,它不被视为标准方法。 Pod 本质上是短暂的,它们可能会出于无数原因被删除和重新创建。 Pod 将丢失 VIM 所做的更改。
  • 假设文件系统不是只读的,您可以构建自己的映像或使用 sed 之类的工具来解决该问题。
  • 对此有很大的投入。我同意 pod 的短暂性质会使我在删除并重新创建 pod 时丢失更改。现在你能帮我在部署创建期间从 pod spec 部分编辑 wp-config.php 文件吗?所以它会在每次新部署时重新创建

标签: wordpress docker kubernetes kubernetes-helm


【解决方案1】:

在图表文档存储库 here 中,有两种可能的方法:

因此,对于值文件,您可以使用 wordpressExtraConfigContent 变量并添加额外的内容,或者使用变量 wordpressConfiguration 来设置新的wp-config.php

编辑:您似乎正在尝试使用 php define 定义环境变量,在这种情况下,您可以将环境变量传递给带有变量的 pod:

所以 --set extraEnvVars 或使用您想要的变量创建一个 configmap(会更好)并传递 --set extraEnvVarsCM &lt;you-configmap&gt;(这会将 configmap 作为 env var 安装到 wordpress 容器中。

【讨论】:

  • 这看起来实现起来真的很有趣。这样的东西看起来合适吗? helm install my-wordpress bitnami/wordpress --set mariadb.enabled=false --set externalDatabase.host=my-host --set externalDatabase.user=my-user --set externalDatabase.password=my-password --set externalDatabase.database=mydb --set wordpressExtraConfigContent="define('SSU_PROVIDER', 'aws');define('SSU_BUCKET', 'my-bucket');define('SSU_FOLDER', 'my-folder');"整个想法是将这个额外的内容添加到wp-config.php
  • 我已经更新了问题,所以你可以看到那部分
  • 还在等你
  • 我已经更新了大约 4 小时前
  • 太好了,我会这样做然后恢复
【解决方案2】:

在经历了一系列不同选项之后,我的解决方案是使用插件将我的媒体文件与我的 AWS s3 存储桶同步。我几乎无法使用 bitnami wordpress 容器执行任何功能。无法编辑或安装任何版本 (vi/vim/nano)。它被锁定了,我不想从他们的基础镜像中编辑和构建,因为我们在 k8s 集群上运行 wordpress 应用程序

这是我用的插件media cloud

【讨论】:

    猜你喜欢
    • 2019-07-28
    • 2011-05-07
    • 2010-12-18
    • 2019-10-23
    • 2015-09-10
    • 1970-01-01
    • 2015-08-15
    • 2016-06-23
    • 2017-04-23
    相关资源
    最近更新 更多