ANNAIマガジン
2018年時点のDrupalのDocker環境事情
この記事の目次

本記事はDrupal アドベントカレンダーの22日目の記事です。

geerlingguy/drupal-vm

Acquiageerlingguy によってメンテナンスされているレポジトリです。

元々は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と同様の思想で、必要最低限のシンプルな構成で軽く立ち上がること、また、利用者側でカスタマイズする際に極力ビルドせずに済ませることをポリシーにしています。

dropfabrikに含まれるイメージ

以下のイメージ群で構成されています。

  • 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を使うことで仮想マシンより非常に早くアプリケーションの動作環境を構築することが可能です。サーバーなどの環境構築が苦手な方にこそ使うメリットがある技術ですので、ぜひ試してみてください。

この記事を書いた人 : Yoshikazu Aoyama

ANNAI株式会社の出社しないCTO。
昔は回線交換やL2/L3のプロトコルスタックの開発をしてました。その後、組み込みLinuxやJava/Ruby on RailsなどのWebシステム開発などを経て現職。
インフラからDrupalのモジュール開発、Drupal以外の開発までなんでもやります。
普段は札幌で猫と一緒にリモートワークしています。 好きなモジュールは Restful Web Services と Rules

関連コンテンツ