Используйте drush-patchfile в среде DDEV

В Drupal 7 я использую

drush-patchfile

для автоматической установки патчей при установке / обновлении модуля через drush. Но в DDEV я не знаю, как расширить существующий drush с помощью файла drush-patchfile.

Как вы можете видеть в разделе https://bitbucket.org/davereid/drush-patchfile, установка , Мне нужно клонировать репозиторий в

~ / .drush

каталог, и это добавит его к существующему drush.

В другом проекте без DDEV я уже сделал это, создав новый файл образа докера.

FROM wodby/drupal-php:7.1

USER root
RUN mkdir -p /home/www-data/.drush && chown -R www-data:www-data /home/www-data/;
RUN cd /home/www-data/.drush && git clone https://bitbucket.org/davereid/drush-patchfile.git \
  && echo "<?php \$options['patch-file'] = '/home/www-data/patches/patches.make';" \
  > /home/www-data/.drush/drushrc.php;
USER wodby

Но я не уверен, как это сделать в контейнере DDEV.

Нужно ли мне создавать новую службу на базе drud / ddev-webserver или чего-то еще? Я прочитал документацию, но не знаю, в каком направлении идти.


person Sasa Jovanovic    schedule 16.01.2019    source источник


Ответы (2)


Основываясь на комментарии @rfay, здесь решение, которое работает для меня (и с небольшими изменениями может работать для других проектов).

  1. Я клонировал репо вне контейнера докеров; например, я клонировал в
    # P2 #
  2. Создайте пользовательский drushrc.php в папке $PROJECT_ROOT/.esenca/patches (вы можете выбрать другую папку)
<?php
# Location to the patch.make file. This should be location within docker container
$options['patch-file'] = '/var/www/html/.esenca/patches/patches.make';
  1. Добавьте следующие хуки в $ PROJECT_ROOT / .ddev / config.yaml
hooks:
  post-start:
    # Copy drush-patchfile directory into /home/.drush
    - exec: "ln -s -t /home/.drush/ /var/www/html/docker/drush-patchfile"
    # Copy custom drushrc file.
    - exec: "ln -s -t /home/.drush/ /var/www/html/.esenca/patches/drushrc.php"

Окончательная структура проекта должна выглядеть так:

.
├── .ddev
│   ├── config.yaml
│   ├── docker-compose.yaml
│   ├── .gitignore
│   └── import-db
├── docker
│   ├── drush-patchfile
│   │   ├── composer.json
│   │   ├── patchfile.drush.inc
│   │   ├── README.md
│   │   └── src
├── .esenca
│   └── patches
│       ├── drushrc.php
│       └── patches.make
├── public_html
│   ├── authorize.php
│   ├── CHANGELOG.txt
│   ├── COPYRIGHT.txt
│   ├── cron.php
│   ├── includes
│   ├── index.html
│   ├── index.php
│   ├── INSTALL.mysql.txt
│   ├── INSTALL.pgsql.txt
│   ├── install.php
│   ├── INSTALL.sqlite.txt
│   ├── INSTALL.txt
│   ├── LICENSE.txt
│   ├── MAINTAINERS.txt
│   ├── misc
│   ├── modules
│   ├── profiles
│   ├── README.txt
│   ├── robots.txt
│   ├── scripts
│   ├── sites
│   │   ├── all
│   │   ├── default
│   │   ├── example.sites.php
│   │   └── README.txt
│   ├── themes
│   ├── Under-Construction.gif
│   ├── update.php
│   ├── UPGRADE.txt
│   ├── web.config
│   └── xmlrpc.php
└── README.md

В конце запускаем ddev envronment

ddev start

и теперь вы можете использовать drush-patchfile команды в контейнере веб-докеров.

person Sasa Jovanovic    schedule 17.01.2019

Вы можете ddev ssh, а затем sudo chown -R $(id -u) ~/.drush/, а затем делать в этом каталоге все, что хотите (~ / .drush - это /home/.drush).

Когда у вас все получится и вы захотите повторять это при каждом запуске, вы можете закодировать необходимые инструкции с помощью обработчиков после запуска: https://ddev.readthedocs.io/en/latest/users/exnding-commands/

Пожалуйста, следуйте точному рецепту, который вы используете, так как он может помочь другим. Спасибо!

person rfay    schedule 16.01.2019
comment
Спасибо @rfay за предложения. Я добавил подробное описание в свой ответ. Я не клонировал репозиторий внутри хуков после запуска (на клонирование репо каждый раз при запуске проекта уходит много времени), а просто создавал символические ссылки внутри хуков. Это не такое гибкое решение, но оно быстрее. - person Sasa Jovanovic; 17.01.2019