There are many excellent questions here about automating the initial setup process for Drupal but I haven’t seen any pertaining specifically to Drupal containers in Docker.
Here’s my setup. I’ve kept the images/builds as vanilla as possible; the only Dockerfile I have is for composer
, inspired by the accepted answer to this question.
docker-compose.yml
version: '2' services: drupal: image: drupal ports: - 8888:80 mariadb: image: mariadb environment: MYSQL_DATABASE: drupal8 MYSQL_USER: drupal8 MYSQL_PASSWORD: drupal8 MYSQL_ROOT_PASSWORD: drupal8 restart: always depends_on: - drupal drush: image: drush/drush composer: image: composer build: composer_init depends_on: - drupal - drush
Dockerfile for composer
:
FROM composer RUN composer -vvv create-project drupal-composer/drupal-project /var/www/html --stability dev --no-interaction RUN cd /var/www/html RUN drush si -y --db-url=mysql://root:drupal8@localhost/drupal8 --site-name=drupal8 --site-mail=drupal8@foo.com --account-mail=drupal8@foo.com --account-name=drupal8 --account-pass=drupal8 >> /dev/null 2>&1
I spun up the build process by issuing docker-compose up -d --build
. Now when the process reached the composer part, it blew up with the following message:
Resolving dependencies through SAT Dependency resolution completed in 0.001 seconds Your requirements could not be resolved to an installable set of packages. Problem 1 - drupal/core 8.5.x-dev requires ext-gd * -> the requested PHP extension gd is missing from your system. - drupal/core 8.5.1 requires ext-gd * -> the requested PHP extension gd is missing from your system. - Installation request for drupal/core ~8.5.1 -> satisfiable by drupal/core[8.5.1, 8.5.x-dev]. To enable extensions, verify that they are enabled in your .ini files: - - /usr/local/etc/php/conf.d/date_timezone.ini - /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini - /usr/local/etc/php/conf.d/docker-php-ext-zip.ini - /usr/local/etc/php/conf.d/memory-limit.ini You can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode.
Based on other answers/suggestions here, I added a Dockerfile to my drupal section and added RUN apt-get install php7.0-gd
to the Dockerfile, but this now blows up with E: Package 'php7.0-gd' has no installation candidate
.
I’ve ensured that the PHP version for this Docker image is PHP 7.
php --ini
gives me:
# php --ini Configuration File (php.ini) Path: /usr/local/etc/php Loaded Configuration File: (none) Scan for additional .ini files in: /usr/local/etc/php/conf.d Additional .ini files parsed: /usr/local/etc/php/conf.d/docker-php-ext-gd.ini, /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini, /usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini, /usr/local/etc/php/conf.d/docker-php-ext-zip.ini, /usr/local/etc/php/conf.d/opcache-recommended.ini
How can I resolve this error now?