2

我正在寻找如何在构建过程中通过 Dockerfile RUN 命令激活 WordPress 插件。

Dockerfile中的相关命令是

# activate plugins
RUN wp plugin activate wp-discourse-export --allow-root --path=/var/www/html

我得到的错误是

Step 10/10 : RUN wp plugin activate wp-discourse-export --allow-root --path=/var/www/html
---> Running in c5dac3f62c4c
Error: This does not seem to be a WordPress install.
Pass --path=`path/to/wordpress` or run `wp core download`.
ERROR: Service 'wordpress' failed to build: The command '/bin/sh -c wp plugin 
activate wp-discourse-export --allow-root --path=/var/www/html' returned a non-zero code: 1

如果我禁用该 RUN 命令,构建映像,启动 docker 映像,登录到创建并运行的 docker 映像

wp plugin activate wp-discourse-export --allow-root --path=/var/www/html
Plugin 'wp-discourse-export' activated.
Success: Activated 1 of 1 plugins.

激活成功。

如何在构建过程中激活 docker 镜像中的 WordPress 插件?

更新:

我正在通过将脚本复制到图像然后稍后从主机运行它来解决此问题。

在 Dockerfile 中。

# activate plugins
COPY activate-wordpress-plugins.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/activate-wordpress-plugins.sh

在 docker-compose 之后,我运行了一次这个命令。

docker exec -it wordpress_1_7522c9dae310 /usr/local/bin/activate-wordpress-plugins.sh

更新 2

我创建了一个脚本来启动实例,然后运行该脚本。

#!/usr/bin/env bash

echo docker-compose up -d
docker-compose up -d

echo docker exec -it $(docker-compose ps -q wordpress)  /usr/local/bin/activate-wordpress-plugins.sh
docker exec -it $(docker-compose ps -q wordpress)   /usr/local/bin/activate-wordpress-plugins.sh
4

2 回答 2

3

我认为问题在于 WordPress 插件激活需要 WordPress 安装是实时的,并且具有有效的数据库连接。在映像构建期间,您尚未实例化该环境。构建映像与在容器中运行该映像不同。

正如您所建议的,当容器实例化时,激活插件的适当时间将是在启动时。

于 2018-12-04T04:48:06.733 回答
3

Wordpress 确实有一个名为 mu-plugins 的特殊目录。只需简单地将插件放在那里。 https://codex.wordpress.org/Must_Use_Plugins

WordPress 仅在 mu-plugins 目录中查找 PHP 文件。您可能想在 mu-plugins 目录中创建一个代理 PHP 加载程序文件

  • 永远在线,无需通过管理员启用,用户不能意外禁用。
  • 只需将文件上传到 mu-plugins 目录即可启用,无需登录。
  • 由 PHP 按字母顺序在普通插件之前加载,这意味着在 mu-plugin 中添加的 API 钩子适用于所有其他插件,即使它们在全局命名空间中运行钩子函数
于 2019-01-14T03:18:15.843 回答