Установка плагина с wp-cli в среде CI

#wordpress #w3-total-cache #wp-cli

#wordpress #w3-total-cache #wp-cli

Вопрос:

Я пытаюсь установить плагин w3-total-cache в образ wordpress docker с помощью wp-cli , но, похоже, он пытается подключиться к базе данных, даже если я не пытаюсь его активировать. В 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, я бы вызывал только wp-cli для активации плагинов, как я уже делаю для плагинов, установленных с composer).

Ответ №1:

В итоге я решил, что лучшим вариантом в этом случае является curl zip-файл из WordPress (потому что в конечном итоге плагины WordPress — это в основном каталоги внутри plugins папки).

Я добавил следующие инструкции в файл dockerfile:

 ENV W3TC_VERSION 0.14.4

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

Обновление (2020-08-20)

Я поступил так, как предложил 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.

Комментарии:

1. Разве вы не можете каким-то образом использовать репозиторий напрямую с Composer? Я имею в виду, что вы уже управляете своим проектом с помощью Composer. В противном случае, может быть, поместить это как некоторую команду post install в composer.json? Это просто: как ваши коллеги, которые git клонируют проект в первый раз, узнали об этом модуле и как его загрузить?

2. Но какой репозиторий мы бы использовали с composer? Тот, который я упомянул в вопросе, кажется устаревшим и не является официальным, и это единственный, который я нашел. Загруженный плагин, с другой стороны, является официальным. При разработке мы использовали бы тот же образ docker, но поскольку мы бы сопоставили папку WordPress с нашим репозиторием, это сделало бы плагин недоступным, поэтому я подумываю о копировании w3tc папки плагина в изображении docker (в конце концов, это просто загружаемая папка плагина) в plugins папки на компьютере в скрипте установки.

3. Тем не менее, я рассмотрю возможность включения его в команду post install в composer.json , чтобы сделать весь процесс более простым.