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

如何在构建过程中激活docker映像中的WordPress插件?,wordpress,docker,wp-cli,Wordpress,Docker,Wp Cli,我正在寻找如何在构建过程中通过Dockerfile运行命令激活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

我正在寻找如何在构建过程中通过Dockerfile运行命令激活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编写之后,我运行此命令一次

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

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


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

Wordpress确实有一个名为mu plugins的特殊目录。只要把你的插件放在那里就行了。

WordPress只在mu插件目录中查找PHP文件。您可能希望在mu插件目录中创建一个代理PHP加载程序文件

  • 始终启用,无需通过管理员启用,用户不能意外禁用
  • 只需将文件上传到mu plugins目录即可启用,无需登录
  • 由PHP按字母顺序在普通插件之前加载,这意味着在mu插件中添加的API挂钩适用于所有其他插件,即使它们在全局命名空间中运行挂钩函数

对于某些用例,良好的左字段选项。