我如何 运行 composer with ddev?

How can I run composer with ddev?

我需要在我的 ddev 项目上 运行 composer,但我的 Windows 机器上没有。例如,项目在启动前需要一个composer install。我如何在这种环境下使用作曲家,尤其是在 Windows?

2018-11-15 更新以显示本机 ddev 支持(ddev composer 命令)

有多种方法可以为您的项目运行作曲。

  1. ddev v1.4.0 现在有 ddev composerddev composer create 命令。这些 运行 容器内的作曲家,因此您可以保证获得与 in-container 托管环境相匹配的作曲家行为。 (这对 Windows 用户来说最重要。)
    • ddev composer require swiftmailer/swiftmailer
    • ddev composer update
    • ddev composer install
    • ddev composer create drupal-composer/drupal-project:8.x-dev --stability dev

请注意 ddev composer createcomposer create-project 不完全 相同,因此您不必了解底层文件系统的复杂性。文档中有 drupal and TYPO3 ddev composer create 个示例。

这里没有任何内容会阻止您使用您熟悉的任何作曲家技术,但这是获得可预测的 on-linux in-container 作曲家构建的好方法。对于使用 Windows OS 的人来说,这应该是非常重要的,因为作曲家不太可用并且有一些不可预测的行为。

  1. 以老式方式在主机上安装:如果作曲家是 installed on your computer/host, just composer install. However, that only works on macOS and Linux, and only works if you have the right versions of php related components. It does not work well at all on Windows (NTFS) because the symlinks composer creates are not compatible with usage inside the (Linux) web container. (Composer is not hard to install on Windows: Use chocolateychoco install -y composer。您需要在 c:\tools\php72\php.ini)

  2. 中启用 gd 和 curl 扩展
  3. 所有正常的 composer 行为始终安装在您的 Web 容器中,因此无论您的主机上是否安装了 composer,您都可以使用它。例如:ddev exec composer install -d /var/www/html 将在您的存储库的根目录中执行 composer 安装,与 ddev composer install 完全相同。也可以在容器中做ddev ssh,在命令行操作

  4. 尝试这种挂钩方法 运行 每次启动项目时 在容器内 (在安装的分区上)安装 composer:
    hooks:
      post-start:
      - exec: composer install -d /var/www/html

有关作曲家模式的一些较早的想法(大部分已被 ddev composer 废弃,请参阅

展开 , DDEV now has a composer-specific hook

hooks:
  post-start:
  - composer: install -d /var/www/html

我认为使用它而不是 exec 的原因是还有 pre-composerpost-composer 挂钩,所以也许这也会执行这些挂钩。不过,我不确定那个或实际的区别。