本記事は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を使うことで仮想マシンより非常に早くアプリケーションの動作環境を構築することが可能です。サーバーなどの環境構築が苦手な方にこそ使うメリットがある技術ですので、ぜひ試してみてください。
関連コンテンツ
- Drupal 導入前に必ず考えたい「保守」のこと
- 手軽に本格的な Drupal のローカル開発環境を構築してみよう
- 9 つのシンプルなステップで Drupal 9 のテーマを作成してみよう
- Drupal 9: 一般的なエクスプロイトの経路をブロックする方法
- エンジニア新人研修のご紹介
- Headless CMS というトレンドに Drupal は適応している!?
- Drupal 9.1 が登場!アップグレードの準備はできていますか?
- Drupal 9 におすすめのモジュール
- State of Drupalプレゼンテーション(2021年4月)
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報
Drupal 初心者講座バックナンバー
- Drupal 9/10 初心者講座
- 第 1 回 歴史に見る Drupal の DNA
- 第 2 回 Drupal はフレームワークか?CMS か?他の CMS との比較
- 第 3 回 Drupal の特徴
- 第 4 回 Drupal 9 / 10 のインストール (1)
- 第 5 回 Drupal 9 / 10 のインストール (2)
- 第 6 回 Drupal にコンテンツを投稿してみる
- 第 7 回 Drupal のボキャブラリとタクソノミーの使い方
- 第 8 回 コンテンツ管理における Drupal と他の CMS との比較
- 第 9 回 Drupal のブロックシステム
- 第 10 回 Drupal の標準クエリビルダー Views の使い方
- 第 11 回 Drupal と他の CMS のクエリビルダー機能を比較
- 第 12 回 Drupal の多言語機能と他の CMS やサービスとの比較
- 第 13 回 Drupal の権限設定と WordPress や Movable Type との比較
- 第 14 回 Drupal のテーマシステムについて
- 第 15 回 Drupal の拡張モジュールの選定と使い方
- 第 16 回 Drupal をもっと知りたい方に向けた各種情報