首页 > 解决方案 > 在 DDEV 环境中使用 drush-patchfile

问题描述

在 Drupal 7 中,我使用

快速补丁文件

通过 drush 安装/更新模块时自动实施补丁。但在 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 或其他东西创建新服务?我已经阅读了文档,但不确定该往哪个方向发展。

标签: ddev

解决方案


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

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

    $PROJECT_ROOT/docker/drush-patchfile

  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 环境

ddev start

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


推荐阅读