我正在寻找如何在构建过程中通过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
答案 0 :(得分:3)
我认为问题在于激活WordPress插件需要有效的db连接才能激活WordPress安装。在映像构建期间,您尚未实例化该环境。构建映像与在容器中运行该映像不同。
如您所建议的那样,激活插件的合适时间是容器实例化时的启动时间。
答案 1 :(得分:1)
Wordpress确实有一个名为mu-plugins的特殊目录。只需将插件放在此处即可。 https://codex.wordpress.org/Must_Use_Plugins。
WordPress仅在mu-plugins目录中查找PHP文件。您可能要在mu-plugins目录中创建一个代理PHP加载程序文件
- 始终在线,无需通过管理员启用,用户也不能意外禁用。
- 只需将文件上传到mu-plugins目录即可启用,而无需登录。
- 由PHP按字母顺序在普通插件之前加载,这意味着在mu-plugin中添加的API挂钩也适用于所有其他插件,即使它们在全局名称空间中运行钩子函数