在 CI 环境中使用 wp-cli 安装插件
Install plugin with wp-cli in a CI environment
我正在尝试安装非官方的 w3-total-cache plugin in a wordpress docker image with the wp-cli
, but it seems to try to connect to the database, even tough I don't try to activate it. In the Dockerfile I install other themes/plugins with composer and everything seems fine, but the only package I found for the w3tc
plugin is https://packagist.org/packages/finaldream/w3-total-cache,而且似乎也不是最新的(版本 0.9.4.6
而 w3tc 是版本 0.14.4
).
我可以用 wp-cli
在最终环境的机器上安装它,因为它有数据库,但我似乎无法在 CI 环境中安装它来创建 docker 带有预装插件的图像,我还没有找到关于它的其他问题和解决方案。
有没有办法在没有数据库的CI环境中安装插件?(在最终环境中,无论是开发环境、暂存环境还是生产环境,我只会调用 wp-cli
来激活插件,就像我已经为使用 composer 安装的插件所做的那样)。
我最终认为在这种情况下最好的选择是 curl
来自 wordpress 的 zip 文件(因为最终 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
文件的 post 安装指令中包含了一条指令,以使用以下命令调用 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 环境的人来说更加透明。
我正在尝试安装非官方的 w3-total-cache plugin in a wordpress docker image with the wp-cli
, but it seems to try to connect to the database, even tough I don't try to activate it. In the Dockerfile I install other themes/plugins with composer and everything seems fine, but the only package I found for the w3tc
plugin is https://packagist.org/packages/finaldream/w3-total-cache,而且似乎也不是最新的(版本 0.9.4.6
而 w3tc 是版本 0.14.4
).
我可以用 wp-cli
在最终环境的机器上安装它,因为它有数据库,但我似乎无法在 CI 环境中安装它来创建 docker 带有预装插件的图像,我还没有找到关于它的其他问题和解决方案。
有没有办法在没有数据库的CI环境中安装插件?(在最终环境中,无论是开发环境、暂存环境还是生产环境,我只会调用 wp-cli
来激活插件,就像我已经为使用 composer 安装的插件所做的那样)。
我最终认为在这种情况下最好的选择是 curl
来自 wordpress 的 zip 文件(因为最终 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
文件的 post 安装指令中包含了一条指令,以使用以下命令调用 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 环境的人来说更加透明。