最新のdrupalをdockerを使用してインストール・設定します。バージョンはdrupal10です。DrupalはオープンソースのContent Management System(CMS)の一つで、Webサイトを構築・運用するためのフレームワークを提供します。CMSとは、Webサイトの内容を管理・編集するためのシステムを指します。
Drupalの特徴は以下の通りです:
- 高いカスタマイズ性:Drupalは非常に柔軟な構造を持っており、サイトオーナーが自分のニーズに合わせてサイトをカスタマイズすることが可能です。
- モジュール:Drupalの機能はモジュールと呼ばれる追加可能なコンポーネントで拡張することができます。数千ものモジュールが無料で提供されており、特定の機能を追加したり、サイトの挙動を変えたりすることが可能です。
- コミュニティ:Drupalは世界中に広大なコミュニティを持っています。これにより、問題解決のサポートが豊富で、新しいモジュールや改良されたバージョンが頻繁にリリースされます。
- セキュリティ:Drupalは高いセキュリティが求められる公共機関や大企業でも使われるほど、信頼性の高いセキュリティを提供します。
Drupalは強力で多機能なシステムですが、その反面、使いこなすためには一定の学習が必要です。しかし、その学習を経て得られる制御性とカスタマイズ性は、非常に大きな利点となります。
下記の公式イメージを使用して実現します。まずは簡単なコマンドでコンテナを立ち上げます。
docker run --name test -d drupal
正常に立ち上がったコンテナに入って、ディレクトリの構造を調べてきます。主要なファイルは下記のようになっていました。
docker exec -ti test bash
/etc/apache2→webサーバーの設定ファイル
/usr/local/etc/php→PHP関連
/var/www/html→ドキュメントルート
重要なファイルの場所を確認したので、これらをコンテナからホストにコピーしておきます。まずはホストにディレクトリを作成しておきます。
mkdir dr
次のコマンドでコンテナから重要なファイルをホストへコピーしてきます。
docker cp test:/etc/apache2 /root/dr/apache2
docker cp test:/usr/local/etc/php /root/dr/php
docker cp test:/var/www/html/modules /root/dr/modules
docker cp test:/var/www/html/profiles /root/dr/profiles
docker cp test:/var/www/html/sites /root/dr/sites
docker cp test:/var/www/html/themes /root/dr/themes
ファイルは取り寄せたので、コンテナを停止して削除します。
docker stop test
docker rm test
実際に運用できるようにコンテナを立ち上げます。
docker run \
--name test \
-p 8881:80 \
-v /root/dr/php:/usr/local/etc/php \
-v /root/dr/apache2:/etc/apache2 \
-v /root/dr/modules:/var/www/html/modules \
-v /root/dr/profiles:/var/www/html/profiles \
-v /root/dr/sites:/var/www/html/sites \
-v /root/dr/themes:/var/www/html/themes \
-d drupal
このdockerコマンドはホスト側でポート番号8881を使用するのでこのトラフィックを許可しておきます。OracleCloudのインスタンスで立ち上げているので、イングレスルールでも許可しておきます。自宅で運用している時はルーターでポート開放の設定をしておきます。
ufw allow 8881/tcp
ブラウザでアクセスします。
http://IPアドレス:8881
インストール画面は正常に表示されましたが、少し進むとエラーが発生しました。
The translations directory does not exist.
The installer requires that you create a translations directory as part of the installation process. Create the directory sites/default/files/translations . More details about installing Drupal are available in INSTALL.txt.

先ほどコンテナ内で確認するのを忘れたのですが、次のディレクトリの所有権がwww-dataになっていました。マウントしたことにより、所有権が変更になってしまったので元に戻します。
modules、sites、themes

chown -R www-data:www-data modules sites themes
データベースの情報を途中で入力するページがありますが必要事項を入力して進めます。データベースは他のサーバーにあるので今回は新たには作成しませんでした。MySQL、MariaDB、および同等のデータベースのデフォルトのトランザクション分離レベルは「REPEATABLE READ」です。Drupal でこの設定を行うと、テーブルでデッドロックが発生し、サイトが非常に遅くなったり、まったく応答しなくなったりする可能性があります。Drupal サイトに推奨されるトランザクション分離レベルは「READ COMMITTED」です。正常に起動するイメージを使用して、Dockerでコンテナを立ち上げているので他にエラーは出ませんでした。
無事インストールが終わりましたが、ほとんどが英語なので、これが困難な方は日本語ファイルをダウンロードしてインポートします。下記のページからダウンロードしましょう。ファイルの拡張子は.poとなっています。
インポートの仕方は次の通りです。
Configuration→User interface translationと進み、importタブでファイルを読み込んでインストールします。

その後日本語になっているはずです。
