Установите плагин с помощью wp-cli в среде CI

Я пытаюсь установить плагин w3-total-cache в образ докера wordpress с wp-cli, но он, кажется, пытается подключиться к базе данных, даже если я не пытаюсь его активировать. В Dockerfile я устанавливаю другие темы/плагины с помощью композитора, и все выглядит нормально, но единственный пакет, который я нашел для плагина w3tc, это https://packagist.org/packages/finaldream/w3-total-cache, который не является официальным и, похоже, не актуален (версия 0.9.4.6 в то время как w3tc — это версия 0.14.4).

Я могу установить его с wp-cli на машину в конечной среде, потому что у него есть база данных, но, похоже, я не могу установить в среде CI, чтобы создать образ докера с предустановленными плагинами, и я не нашел других вопросы и решения по этому поводу.

Есть ли способ установить подключаемый модуль в среде CI без базы данных? (в конечной среде, будь то среда разработки, промежуточная или производственная, я бы вызывал только wp-cli для активации подключаемых модулей, т.к. Я уже делаю для плагинов, установленных с композитором).


person Lucas Basquerotto    schedule 18.08.2020    source источник


Ответы (1)


В конце концов я решил, что лучший вариант в этом случае — это curl zip-файл из wordpress (потому что, в конце концов, плагины 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

Обновление (20 августа 2020 г.)

Я сделал так, как предложил leymannx в комментариях, и включил инструкцию после установки в файл composer.json для вызова сценария оболочки со следующими командами:

#!/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.

person Lucas Basquerotto    schedule 19.08.2020
comment
Разве вы не можете как-то получить какой-нибудь репозиторий напрямую с помощью Composer? Я имею в виду, что вы уже управляете своим проектом с помощью Composer. В противном случае, возможно, поместите это как команду после установки в composer.json? Просто: Откуда ваши коллеги, которые клонируют проект в первый раз, узнают об этом модуле и как его скачать? - person leymannx; 19.08.2020
comment
Но какое репо мы будем использовать с композитором? Тот, который я упомянул в вопросе, кажется устаревшим и не официальным, и это единственный, который я нашел. Загруженный плагин, с другой стороны, является официальным. В процессе разработки мы будем использовать тот же образ докера, но поскольку мы сопоставим папку Wordpress с нашим репозиторием, это сделает плагин недоступным, поэтому я думаю о том, чтобы скопировать папку плагина w3tc в образ докера (в конце концов, это всего лишь загруженную папку подключаемого модуля) в plugins папки на машине в сценарии установки. - person Lucas Basquerotto; 19.08.2020
comment
Тем не менее, я рассмотрю возможность включения его в команду после установки в composer.json, чтобы сделать весь процесс более простым. - person Lucas Basquerotto; 19.08.2020