在 DDEV 环境下使用 drush-patchfile

Use drush-patchfile in DDEV environment

在 Drupal 7 中我使用

drush-patchfile

通过 drush installing/updating 模块时自动实施补丁。但是在 DDEV 中我不知道如何使用 drush-patchfile

扩展现有的 drush

正如您在 https://bitbucket.org/davereid/drush-patchfile 安装部分看到的,我需要将存储库克隆到

~/.drush

目录并将其附加到现有的 drush。

在另一个没有 DDEV 的项目中,我已经创建了新的 docker 图像文件

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 或其他内容创建新服务? 我读过 documentation 但不确定该往哪个方向走。

您可以 ddev ssh 然后 sudo chown -R $(id -u) ~/.drush/ 然后在那个目录中做任何您想做的事(~/.drush 是 /home/.drush)。

当你启动它并且你想在每次启动时重复执行它时,你可以使用 post-start hooks 对你需要的指令进行编码:https://ddev.readthedocs.io/en/latest/users/extending-commands/

请按照您使用的确切食谱进行操作,因为它可能对其他人有帮助。谢谢!

基于@rfay 的评论,这里的解决方案适用于我(并且稍加修改就可以适用于其他项目)。

  1. 我已经在 docker 容器外克隆了 repo;例如,我已经克隆到

    $PROJECT_ROOT/docker/drush-patchfile

  2. $PROJECT_ROOT/.esenca/patches 文件夹中创建自定义 drushrc.php(您可以选择不同的文件夹)
<?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环境

ddev start

现在您可以在 Web docker 容器中使用 drush-patchfile 命令。