在CI环境中使用wp-cli安装插件

问题描述

我正在尝试将w3-total-cache plugin安装在wp-cliwordpress docker映像中,但是它似乎试图连接到数据库,即使很难,我也不想激活它。在Dockerfile中,我使用composer安装了其他主题/插件,一切似乎都很好,但是我发现的w3tc插件唯一的软件包是https://packagist.org/packages/finaldream/w3-total-cache,它不是官方的,而且似乎也没有启动至今(版本0.9.4.6,而w3tc是版本0.14.4)。

我可以在最终环境中的机器中将wp-cli安装在计算机中,因为它具有数据库,但是看来我无法安装在CI环境中以创建带有预安装插件的Docker映像,而且我还没有找到其他问题和解决方案。

是否可以在没有数据库的情况下在CI环境中安装插件(在最终环境中,无论是dev,staging还是Production,我只会调用{{1} }来激活插件,就像我对使用composer安装的插件所做的那样。

解决方法

我最终认为,在这种情况下,最好的选择是从wordpress中curl压缩文件(因为最后wordpress插件主要是plugins文件夹中的目录)。

我在dockerfile中添加了以下说明:

ENV W3TC_VERSION 0.14.4

RUN mkdir -p /var/www/html/web/app/plugins \
 && curl -L https://downloads.wordpress.org/plugin/w3-total-cache.${W3TC_VERSION}.zip \
    -o /tmp/w3-total-cache.zip \
 && unzip /tmp/w3-total-cache.zip -d /var/www/html/web/app/plugins \
 && rm /tmp/w3-total-cache.zip \
 && chown -R www-data:www-data /var/www/html/web/app/plugins \
 && cp /var/www/html/web/app/plugins/w3-total-cache/wp-content/advanced-cache.php \
    /var/www/html/web/app/advanced-cache.php \
 && chown www-data:www-data /var/www/html/web/app/advanced-cache.php \
 && mkdir -p /var/www/html/web/app/cache \
 && chown www-data:www-data /var/www/html/web/app/cache \
 && mkdir -p /var/www/html/web/app/w3tc-config \
 && chown www-data:www-data /var/www/html/web/app/w3tc-config

更新(2020-08-20)

我按照leymannx的建议进行操作,并在composer.json文件的安装后指令中包含了一条指令,以使用以下命令来调用Shell脚本:

#!/bin/bash
set -eou pipefail

echo "$(date '+%F %X') Custom install - Start"

W3TC_VERSION=0.14.4
APP_DIR=/var/www/html/web/app
PLUGINS_DIR="$APP_DIR/plugins"
W3TC_URL="https://downloads.wordpress.org/plugin/w3-total-cache.${W3TC_VERSION}.zip"

if [ ! -d "$PLUGINS_DIR/w3-total-cache" ]; then
    mkdir -p "$PLUGINS_DIR"

    curl -L "$W3TC_URL" -o /tmp/w3-total-cache.zip

    unzip /tmp/w3-total-cache.zip -d "$PLUGINS_DIR"
    rm /tmp/w3-total-cache.zip

    chown -R www-data:www-data "$PLUGINS_DIR"

    cp "$PLUGINS_DIR"/w3-total-cache/wp-content/advanced-cache.php \
        "$APP_DIR"/advanced-cache.php
    chown www-data:www-data "$APP_DIR"/advanced-cache.php

    mkdir -p "$APP_DIR"/cache
    chown www-data:www-data "$APP_DIR"/cache

    mkdir -p "$APP_DIR"/w3tc-config
    chown www-data:www-data "$APP_DIR"/w3tc-config
fi

echo "$(date '+%F %X') Custom install - End"

(我还从Dockerfile中删除了这些命令)

这使使用此wordpress环境的所有人的整个过程更加透明。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...