
本記事はDrupal アドベントカレンダーの22日目の記事です。
geerlingguy/drupal-vm
Acquiaのgeerlingguy によってメンテナンスされているレポジトリです。
元々はvagrant + ansibleで仮想マシンベースのDrupal環境を作るものだったのですが、現在は仮想マシンとDockerの両方をサポートしています。
LAMPスタックだけではなく、Solr, ElasticSearch, Seleminum, Memcachedなど周辺のサービスを含めて環境を構築できるのが特徴です。
ただし、機能が豊富な分環境としては重いというデメリットがあります。
また、開発スピードが早く、個人的な印象としては割と破壊的な変更を気軽に入れてくるなぁという気がします (私が使っていたのはリリースして間もない頃だったので、現在はそんなことはないかもしれません)。
wodby/docker4drupal
コンテナのホスティングサービスを行っているWodbyによってメンテナンスされているレポジトリです。
drupal-vmと同様にSolr, ElasticSearch, Varnish, Memcachedなど周辺のサービスを含めて環境を構築できます。
ホスティングサービスとしてWodbyを利用する場合、ローカル環境とプロダクション環境をかなり近い状態にできるのがメリットです。
また、ほぼ同一の環境としてWordpress向けのwodby/docker4wordpress もありますので、Drupalとwordpressの両方を使う方は環境が統一できて良いかもしれません。
こちらもdrupal-vmと同様に機能の追加や変更は活発に行われています。
drud/ddev
こちらはDrupal向けの環境ではなくPHP向けの汎用のDocker環境になります。
そのため、設定次第ではどんなPHPアプリケーションでも動作すると思いますが、ドキュメントが整備され手軽に動かせるものとしては以下がサポートされています。
- WordPress
- Drupal 6 and 7
- Drupal 8
- Backdrop
- TYPO3
docker-library/drupal
DockerHub に公開されているオフィシャルイメージです (オフィシャルと言ってもDockerのオフィシャルであってDrupal.orgが公開しているわけではありません)。
非常に簡単にDocker上でDrupalが起動できるのですが、その反面このイメージ自身ではソースコードのボリュームをマウントする(つまり、ソースコードを書き換える)ことができない作りになっています。
公開当初からissueが挙がっていますが3年経ってもクローズされていないため、開発用のイメージとして使われる想定はなさそうです。
expresso-php/expresso-php
弊社の井上がフィリピンで生活する際にいつもお世話になっているLuukybによってメンテナンスされています。
drupal-vmやdocker4drupalと違い、以下のように必要最低限のイメージ群のみで構成され、軽くシンプルに環境が立ち上がるのが特徴です。
- Nginx (apacheは未サポート)
- PHP
- Mariadb
- PhpMyAdmin
- Mailhog
また、READMEにもあるようにofficialイメージをそのまま、もしくは設定ファイルなど最低限の上書きのみで使っており、利用者側でのカスタマイズやメンテナスも非常にしやすくなっています。
blauerberg/dropfabrik
私がメンテンスしているレポジトリです。
expresso-phpと同様の思想で、必要最低限のシンプルな構成で軽く立ち上がること、また、利用者側でカスタマイズする際に極力ビルドせずに済ませることをポリシーにしています。

以下のイメージ群で構成されています。
- Nginx Proxy
- Nginx (or apache)
- PHP-FPM
- Mariadb
- PhpMyAdmin
- Mailhog
ほとんどexpresso-phpと同じ構成ですね。違いとしては、
- Docker内のwebサーバーに任意の名前でアクセスするためにnginx-proxyを使っている
- webサーバーとしてapacheもサポートしている
くらいでしょうか。また、ちょっとしたパラメータの変更などでいちいちイメージをビルドするのは面倒なので、nginx(apache),php-fpm,mariadbなどの設定ファイルはイメージ内ではなくホストOS側のファイルをマウントする形にしています。
まとめ
数年前までは仮想マシンベースの環境がメインでしたが、ここ1,2年でDockerなどコンテナベースの環境が一気に身近になってきています。両者にはそれぞれメリット・デメリットがあるので一概にどちらが良いという事はありませんが、Dockerを使うことで仮想マシンより非常に早くアプリケーションの動作環境を構築することが可能です。サーバーなどの環境構築が苦手な方にこそ使うメリットがある技術ですので、ぜひ試してみてください。
関連コンテンツ
- Node.jsを用いて、REST APIで外部からDrupal8にコンテンツを投稿する
- Drupal8に記事を作成するReactアプリを作る
- Drupal 8のノードのデータ構造を見てみる (2)
- 既存のDrupalフィールドを再利用すべきか?
- CMSの第四の波 Distributed CMS (Drupal Developer Days Transylvania 2019)
- 2019年3月6日以降、Drupal 8を利用する場合はPHP7が必要です。(PHP 7.1以上を推奨)
- Drupal 7 サポート終了と長期サポートについて
- PHPTemplateとTwig themingの記法の比較
- Drupal8のTomeモジュールで静的サイトを生成する
- Drupal8のテーマにスタイルシート(CSS)とJavaScript(JS)を追加する
Drupal 8初心者講座バックナンバー
Drupal初心者講座について
第1回 歴史に見るDrupal のDNA
第2回 Drupalはフレームワークか?CMSか?
第3回 Drupalの特徴
第4回 Drupal 8のインストール(1)
第5回 Drupal 8のインストール(2)
第6回 コンテンツを投稿してみる
第7回 ボキャブラリとタクソノミーを使う
第8回 コンテンツ管理におけるDrupalと他のCMSとの比較
第9回 Drupal 8のブロックシステム
第10回 Drupalの標準クエリービルダ Views
第11回 Drupalと他のCMSのクエリビルダー機能を比較
第12回 Drupal 8の多言語機能と他のCMSやサービスとの比較
第13回 Drupalの権限設定とWordPressやMovable Typeとの比較
第14回 Drupalのテーマシステムについて
第15回 Drupalの拡張モジュールの選定と利用方法
第16回 Drupalをもっと知りたい方に向けた各種情報