Drupal の issue 検証環境を Docker ベースで自作した話

>100 Views

April 05, 25

スライド概要

Drupal Meetup Tokyo #101 で発表したスライドです。

profile-image

Web developer, OpenStreetMap mapper. This Account tweets only Tech or OSM, sometimes something like geography except for reply or fav.

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Drupal の issue 検証環境を Docker ベースで自作した 話 Tom Konda (Drupal.org ID: tom-konda, X: @tom_k_en) Drupal Meetup Tokyo #101 2025/04/05

2.

Drupal コアの issue の動作検証どうしてますか? issue 毎に独立した環境が欲しい Docker と compose で出来ると嬉しい 検証環境なので色々切り替えられるようにしたい パッチを当てたい Drupal のメジャーバージョンを変えたい ついでに最新コミットのソースが欲しい MySQL と PostgreSQL を切り替えたい これの内容が DDEV などの既存ソフトウェアで行えるか調査しても良いけど、 Docker 周りの知見を深めたいし、自作してみよう Drupal Meetup Tokyo #101 2025/04/05 1

3.

compose.yml に記述するサービス Drupal (マルチステージビルド) 詳細は次スライド DB 使用する DB を以下から選択(選択されなくてもコンテナとして存在) MySQL PostgreSQL Selenium Functional JavaScript と Nightwatch.js のテスト用 Drupal Meetup Tokyo #101 2025/04/05 2

4.

Drupal コンテナの Dockerfile ビルド手順 1. CLI 版 PHP が動くイメージを使い、composer で drupal/recommended-project:指定 バージョン番号.x の最新コミットのソースコード取得(ステージ1) --stability=dev と --ignore-platform-reqs 指定 2. Node.js が動くイメージを使い、1. で取得したコードを元に package.json の依存 関係をインストールし node_modules ディレクトリ作成(ステージ2) 3. apache が動くイメージを使い、1. と 2. で作成したファイルを持ってきてウェブ サーバを動かす(ステージ3) 詳細は次スライド Drupal Meetup Tokyo #101 2025/04/05 3

5.

ステージ3 の詳細 1. Drupal に必要なライブラリ類のインストール 2. ステージ1から Drupal のソースコードコピー 3. ステージ1、2 から composer と node コマンドをコピー 4. composer.json の設定追加、 composer-patches と drush インストール 5. パッチを当てるための設定追加、パッチのインストール 6. ステージ2 から node_modules ディレクトリを /core ディレクトリにコピー Drupal Meetup Tokyo #101 2025/04/05 4

6.

インストールする Drupal バージョンや使用 DB の選 択をどうするか? .env ファイルに設定値を書いて切り替え可能にする compose.yml から Dockerfile に args で値を渡す形 DRUPAL_VERSION=11 # インストールするバージョン DB_TYPE=pgsql # 使用する DB PORT=60080 # localhost で公開するポート Drupal Meetup Tokyo #101 2025/04/05 5

7.

Nightwatch.js のテスト用の設定 Drupal をインストールする DB と異なる DB が必要なので、コンテナ作成時に MySQL と PostgreSQL でそれぞれ DB を追加しておく 作成は /docker-entrypoint-initdb.d/ へのバインド MySQL は DB の操作権限も付与する必要があるため、SQL 文を完全に共通に は出来ない Drupal Meetup Tokyo #101 2025/04/05 6

8.

Github などへの公開しないの? Drupal オフィシャルの Docker イメージにライセンスが書いてないので躊躇して ます Dockerfile に記述した Drupal に必要なライブラリ類のインストールはほぼ公 式イメージの記述のままのため Drupal Meetup Tokyo #101 2025/04/05 7

9.

ところで Drupal コアの issue の動作検証だけでなくて、Contrib モジュールの動作検証も出来た ら嬉しいですよね? Drupal Meetup Tokyo #101 2025/04/05 8

10.

出来ます!! Drupal Meetup Tokyo #101 2025/04/05 9

11.

(再掲)ステージ3 の詳細 1. Drupal に必要なライブラリ類のインストール 2. Drupal のソースコードコピー 3. composer と node コマンドをコピー 4. composer.json の設定追加、 composer-patches と drush インストール 5. パッチを当てるための設定追加、パッチのインストール 6. node_modules ディレクトリを /core ディレクトリにコピー この手順に Contrib モジュールのインストールを加える Drupal Meetup Tokyo #101 2025/04/05 10

12.

Contrib モジュールに対応したビルド手順 3 の詳細 1. Drupal に必要なライブラリ類のインストール 2. Drupal のソースコードコピー 3. composer と node コマンドをコピー 4. composer.json の設定追加、 composer-patches と drush インストール 5. パッチを当てるための設定追加、パッチのインストール 6. node_modules ディレクトリを /core ディレクトリにコピー 7. CMD を使って、コンテナ作成の最後に Contrib モジュールとその依存関係のイン ストール Drupal Meetup Tokyo #101 2025/04/05 11

13.

Contrib モジュールの指定は? DB の選択と同様に .env ファイルに記述 DRUPAL_VERSION=11 # インストールするバージョン DB_TYPE=pgsql # 使用する DB PORT=60080 # localhost で公開するポート PROJECT_NAME=webform # 指定する Contrib モジュール Drupal Meetup Tokyo #101 2025/04/05 12

14.

デモ 見せられる時間があれば Drupal Meetup Tokyo #101 2025/04/05 13

15.

まとめ Drupal コアの issue の動作検証がしたくて Docker ベースで自作した 環境変数に指定することで以下を切り替えられる 使用 DB、Drupal のメジャーバージョン Contrib モジュールの動作検証にも対応した インストールする Contrib モジュールも環境変数で対応 Drupal Meetup Tokyo #101 2025/04/05 14