>100 Views
April 05, 25
スライド概要
Drupal Meetup Tokyo #101 で発表したスライドです。
Web developer, OpenStreetMap mapper. This Account tweets only Tech or OSM, sometimes something like geography except for reply or fav.
Drupal の issue 検証環境を Docker ベースで自作した 話 Tom Konda (Drupal.org ID: tom-konda, X: @tom_k_en) Drupal Meetup Tokyo #101 2025/04/05
Drupal コアの issue の動作検証どうしてますか? issue 毎に独立した環境が欲しい Docker と compose で出来ると嬉しい 検証環境なので色々切り替えられるようにしたい パッチを当てたい Drupal のメジャーバージョンを変えたい ついでに最新コミットのソースが欲しい MySQL と PostgreSQL を切り替えたい これの内容が DDEV などの既存ソフトウェアで行えるか調査しても良いけど、 Docker 周りの知見を深めたいし、自作してみよう Drupal Meetup Tokyo #101 2025/04/05 1
compose.yml に記述するサービス Drupal (マルチステージビルド) 詳細は次スライド DB 使用する DB を以下から選択(選択されなくてもコンテナとして存在) MySQL PostgreSQL Selenium Functional JavaScript と Nightwatch.js のテスト用 Drupal Meetup Tokyo #101 2025/04/05 2
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
ステージ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
インストールする 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
Nightwatch.js のテスト用の設定 Drupal をインストールする DB と異なる DB が必要なので、コンテナ作成時に MySQL と PostgreSQL でそれぞれ DB を追加しておく 作成は /docker-entrypoint-initdb.d/ へのバインド MySQL は DB の操作権限も付与する必要があるため、SQL 文を完全に共通に は出来ない Drupal Meetup Tokyo #101 2025/04/05 6
Github などへの公開しないの? Drupal オフィシャルの Docker イメージにライセンスが書いてないので躊躇して ます Dockerfile に記述した Drupal に必要なライブラリ類のインストールはほぼ公 式イメージの記述のままのため Drupal Meetup Tokyo #101 2025/04/05 7
ところで Drupal コアの issue の動作検証だけでなくて、Contrib モジュールの動作検証も出来た ら嬉しいですよね? Drupal Meetup Tokyo #101 2025/04/05 8
出来ます!! Drupal Meetup Tokyo #101 2025/04/05 9
(再掲)ステージ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
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
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
デモ 見せられる時間があれば Drupal Meetup Tokyo #101 2025/04/05 13
まとめ Drupal コアの issue の動作検証がしたくて Docker ベースで自作した 環境変数に指定することで以下を切り替えられる 使用 DB、Drupal のメジャーバージョン Contrib モジュールの動作検証にも対応した インストールする Contrib モジュールも環境変数で対応 Drupal Meetup Tokyo #101 2025/04/05 14