0

I've been working on trying to set up a Drupal 10 local development instance on my Windows machine and keep running into an issue of the Drupal installation failing when I have a volume mounted.

Following the instructions given on Using Composer to Install Drupal and Manage Dependencies / Installing with Composer via Docker, I've run docker run --rm -i --tty -v %cd%/drupal:/app/drupal composer create-project drupal/recommended-project drupal --ignore-platform-reqs.

It shows the following output.

Creating a "drupal/recommended-project" project at "./drupal"
Installing drupal/recommended-project (10.0.9)

  • Downloading drupal/recommended-project (10.0.9)
  • Installing drupal/recommended-project (10.0.9): Extracting archive Created project in /app/drupal

Installing dependencies from lock file (including require-dev)
Verifying lock file contents can be installed on current platform.
Package operations: 54 installs, 0 updates, 0 removals

  • Downloading composer/installers (v2.2.0)
  • Downloading drupal/core-composer-scaffold (10.0.9)
  • Downloading drupal/core-project-message (10.0.9)
  • Downloading symfony/polyfill-mbstring (v1.27.0)
  • Downloading symfony/polyfill-ctype (v1.27.0)
  • Downloading twig/twig (v3.5.1)
  • Downloading symfony/yaml (v6.2.10)
  • Downloading symfony/var-exporter (v6.2.10)
  • Downloading symfony/var-dumper (v6.2.10)
  • Downloading symfony/translation-contracts (v3.2.1)
  • Downloading symfony/deprecation-contracts (v3.2.1)
  • Downloading symfony/validator (v6.2.10)
  • Downloading symfony/polyfill-intl-normalizer (v1.27.0)
  • Downloading symfony/polyfill-intl-grapheme (v1.27.0)
  • Downloading symfony/string (v6.2.8)
  • Downloading psr/container (2.0.2)
  • Downloading symfony/service-contracts (v3.2.1)
  • Downloading symfony/serializer (v6.2.10)
  • Downloading symfony/routing (v6.2.8)
  • Downloading symfony/http-foundation (v6.2.10)
  • Downloading psr/http-message (1.0.1)
  • Downloading symfony/psr-http-message-bridge (v2.1.4)
  • Downloading symfony/process (v6.2.10)
  • Downloading symfony/polyfill-php72 (v1.27.0)
  • Downloading symfony/polyfill-intl-idn (v1.27.0)
  • Downloading symfony/polyfill-iconv (v1.27.0)
  • Downloading symfony/mime (v6.2.10)
  • Downloading psr/event-dispatcher (1.0.0)
  • Downloading symfony/event-dispatcher-contracts (v3.2.1)
  • Downloading symfony/event-dispatcher (v6.2.8)
  • Downloading psr/log (3.0.0)
  • Downloading symfony/error-handler (v6.2.10)
  • Downloading symfony/http-kernel (v6.2.10)
  • Downloading symfony/dependency-injection (v6.2.10)
  • Downloading symfony/console (v6.2.10)
  • Downloading ralouphie/getallheaders (3.0.3)
  • Downloading psr/http-factory (1.0.2)
  • Downloading psr/http-client (1.0.2)
  • Downloading psr/cache (3.0.0)
  • Downloading pear/pear_exception (v1.0.2)
  • Downloading pear/console_getopt (v1.4.3)
  • Downloading pear/pear-core-minimal (v1.10.13)
  • Downloading pear/archive_tar (1.4.14)
  • Downloading masterminds/html5 (2.7.6)
  • Downloading guzzlehttp/psr7 (2.4.5)
  • Downloading guzzlehttp/promises (1.5.2)
  • Downloading guzzlehttp/guzzle (7.5.1)
  • Downloading doctrine/lexer (1.2.3)
  • Downloading egulias/email-validator (3.2.5)
  • Downloading doctrine/annotations (1.13.3)
  • Downloading composer/semver (3.3.2)
  • Downloading asm89/stack-cors (v2.1.1)
  • Downloading drupal/core (10.0.9)
  • Installing composer/installers (v2.2.0): Extracting archive
  • Installing drupal/core-composer-scaffold (10.0.9): Extracting archive
  • Installing drupal/core-project-message (10.0.9): Extracting archive
  • Installing symfony/polyfill-mbstring (v1.27.0): Extracting archive
  • Installing symfony/polyfill-ctype (v1.27.0): Extracting archive
  • Installing twig/twig (v3.5.1): Extracting archive
  • Installing symfony/yaml (v6.2.10): Extracting archive
  • Installing symfony/var-exporter (v6.2.10): Extracting archive
  • Installing symfony/var-dumper (v6.2.10): Extracting archive
  • Installing symfony/translation-contracts (v3.2.1): Extracting archive
  • Installing symfony/deprecation-contracts (v3.2.1): Extracting archive
  • Installing symfony/validator (v6.2.10): Extracting archive
  • Installing symfony/polyfill-intl-normalizer (v1.27.0): Extracting archive
  • Installing symfony/polyfill-intl-grapheme (v1.27.0): Extracting archive
  • Installing symfony/string (v6.2.8): Extracting archive
  • Installing psr/container (2.0.2): Extracting archive
  • Installing symfony/service-contracts (v3.2.1): Extracting archive
  • Installing symfony/serializer (v6.2.10): Extracting archive
  • Installing symfony/routing (v6.2.8): Extracting archive
  • Installing symfony/http-foundation (v6.2.10): Extracting archive
  • Installing psr/http-message (1.0.1): Extracting archive
  • Installing symfony/psr-http-message-bridge (v2.1.4): Extracting archive
  • Installing symfony/process (v6.2.10): Extracting archive
  • Installing symfony/polyfill-php72 (v1.27.0): Extracting archive
  • Installing symfony/polyfill-intl-idn (v1.27.0): Extracting archive
  • Installing symfony/polyfill-iconv (v1.27.0): Extracting archive
  • Installing symfony/mime (v6.2.10): Extracting archive
  • Installing psr/event-dispatcher (1.0.0): Extracting archive
  • Installing symfony/event-dispatcher-contracts (v3.2.1): Extracting archive
  • Installing symfony/event-dispatcher (v6.2.8): Extracting archive
  • Installing psr/log (3.0.0): Extracting archive
  • Installing symfony/error-handler (v6.2.10): Extracting archive
  • Installing symfony/http-kernel (v6.2.10): Extracting archive
  • Installing symfony/dependency-injection (v6.2.10): Extracting archive
  • Installing symfony/console (v6.2.10): Extracting archive
  • Installing ralouphie/getallheaders (3.0.3): Extracting archive
  • Installing psr/http-factory (1.0.2): Extracting archive
  • Installing psr/http-client (1.0.2): Extracting archive
  • Installing psr/cache (3.0.0): Extracting archive
  • Installing pear/pear_exception (v1.0.2): Extracting archive
  • Installing pear/console_getopt (v1.4.3): Extracting archive
  • Installing pear/pear-core-minimal (v1.10.13): Extracting archive
  • Installing pear/archive_tar (1.4.14): Extracting archive
  • Installing masterminds/html5 (2.7.6): Extracting archive
  • Installing guzzlehttp/psr7 (2.4.5): Extracting archive
  • Installing guzzlehttp/promises (1.5.2): Extracting archive
  • Installing guzzlehttp/guzzle (7.5.1): Extracting archive
  • Installing doctrine/lexer (1.2.3): Extracting archive
  • Installing egulias/email-validator (3.2.5): Extracting archive
  • Installing doctrine/annotations (1.13.3): Extracting archive
  • Installing composer/semver (3.3.2): Extracting archive
  • Installing asm89/stack-cors (v2.1.1): Extracting archive
  • Installing drupal/core (10.0.9): Extracting archive
  • Installing drupal/core-recommended (10.0.9)
    49/50 [===========================>] 98% Install of drupal/core failed
    The following exception is caused by a process timeout
    Check https://getcomposer.org/doc/06-config.md#process-timeout for details

In Process.php line 1204:

The process "'/usr/bin/unzip' -qq '/app/drupal/vendor/composer/tmp-474185fb585211701bb055d78240c392' -d '/app/drupal/vendor/composer/020e9631'" exceeded the timeout of 300 seconds.

I can see that the issue is that there is a time-out, and I can resolve the issue by setting the COMPOSER_PROCESS_TIMEOUT environment variable > 300 seconds. However, when I do not mount a volume the installation has no issue.

Environment Information

  • Windows 10 Enterprise 22H2 19045.2965
  • Docker version 24.0.2, build cb74dfc
  • Composer version 2.5.8 2023-06-09 17:13:21
10
  • 1
    Most people use a distrubtion such as DDev or Lando, which utilizes Docker under the hood, but manages all the Drupal stuff for you. I personally use DDev.
    – Jaypan
    Jun 21 at 0:29
  • Docker bind mounts can be really slow on Windows.
    – cilefen
    Jun 21 at 1:29
  • I recommend instead installing Composer on your computer. And DDEV.
    – cilefen
    Jun 21 at 4:02
  • Are you using WSL? stackoverflow.com/questions/65285379/…
    – cilefen
    Jun 21 at 12:12
  • The conventional wisdom is that you should use WSL2 to obtain the Linux distro, but do everything from inside the Linux box itself and avoid bind mounts. It is a night and day difference.
    – Kevin
    Jun 21 at 13:46

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Browse other questions tagged or ask your own question.