在DDEV环境中使用drush-patchfile

时间:2019-01-16 16:19:11

标签: ddev

在Drupal 7中,我使用

  

drush-patchfile

在通过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或其他东西创建一个新服务? 我已经读过documentation,但不确定要往哪个方向走。

2 个答案:

答案 0 :(得分:1)

基于@rfay的评论,这里的解决方案对我有效(几乎不需要修改就可以用于其他项目)。

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

    $ 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

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

答案 1 :(得分:0)

您可以先ddev ssh,然后再sudo chown -R $(id -u) ~/.drush/,然后在该目录中执行任意操作(〜/ .drush为/home/.drush)。

当您开始使用它并且想要在每次启动时重复进行操作时,可以使用启动后挂钩对所需的指令进行编码:https://ddev.readthedocs.io/en/latest/users/extending-commands/

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