Docker+Landoで簡単、Drupalローカル環境の構築方法
Collection :
Landoとは
Drupalでは様々なローカル開発環境が利用されており、Landoもその一つです。Landoは、オープンソース製のクロスプラットフォームのローカル開発環境構築ツールです。Linux、Windows、MacOSで利用できるので、チーム内でマシンOSが異なる環境下でも利用できます。
Landoは、プロジェクト開発に必要な環境をDocker上に展開します。
特定の開発ユースケース(Drupal、Python、Laravelなど)を満たすサービスとツールの一般的な組み合わせをレシピから簡単にセットアップできます。これによって、dockerfileやdocker composeで直接行うよりも簡単に環境を立ち上げられます。
LandoでDrupalローカル開発環境を立ち上げる
Landoを使用して、簡単にDrupal環境を作成する方法をご紹介します。Landoインストールが完了したところから解説をスタートします。Landoのインストール方法については公式ドキュメントをご確認ください。
1. プロジェクトディレクトリの作成
まずプロジェクトディレクトリを作成して移動しておきます。
$ mkdir my-d9app && cd my-d9app
2. Landoの設定ファイルの作成
LandoでDrupal環境を構築するにはLandoの設定ファイル(.lando.yml)が必要です。プロジェクトディレクトリ下でlando initコマンドを実行することで、対話的に設定内容を定義できます。
$ lando init
# コードベースの場所を聞かれているので、現在のワーキングディレクトリ(current working directory)を選択します。
? From where should we get your app's codebase? current working directory
# drupal9レシピを選択します。
? What recipe do you want to use? drupal9
# ドキュメントルートのディレクトリを指定します。
? Where is your webroot relative to the init destination? web
# 今回起動するLandoアプリケーションの名前を指定します。
? What do you want to call this app? my-drupal9-app
# ..省略..
NAME my-drupal9-app
LOCATION /Users/hikarumaruyama/src/localonly/my-d9app
RECIPE drupal9
DOCS <https://docs.lando.dev/config/drupal9.html>
プロジェクトディレクトリ直下に .lando.yml ファイルが生成されました。
3. アプリケーションの起動
lando startコマンドでDockerコンテナを起動します。
$ lando start
# ..省略..
NAME my-drupal9-app
LOCATION /Users/hikarumaruyama/src/localonly/my-d9app
SERVICES appserver, database
APPSERVER URLS <https://localhost:55611>
<http://localhost:55610>
<http://my-drupal9-app.lndo.site/>
<https://my-drupal9-app.lndo.site/>
アプリケーションサーバーとデータベースが起動しました。これでLando経由でComposerコマンドが使用できます。
4. Drupalプロジェクトの作成
Composerコマンドの頭にlandoを付けて、Drupalプロジェクトを作成するコマンドを実行します。
Composerは、ディレクトリが空でないとcreate-projectコマンドが実行できない仕様になっています。なのでtmpディレクトリに一時的に展開して、プロジェクトルートに移動する処置を取っています。
$ lando composer create-project drupal/recommended-project tmp && cp -r tmp/. . && rm -rf tmp
5. Drupalの初期インストール
あとは、Drupalの初期インストールを行えば終了です。Drupalの初期インストールを行う際、データベースの接続先情報は lando infoコマンドで確認できます。「drupal9」レシピの場合はデフォルトで次の内容になっているはずです。
- データベース名:drupal9
- ユーザー名:drupal9
- パスワード:drupal9
- ホスト名:database
- ポート番号:3306
Landoの基本的な操作方法
- lando stop:コンテナを停止する。
- lando rebuild:コンテナを再構築する。.lando.ymlファイルを編集した際に、このコマンドを実行することでファイル内容をコンテナ環境に反映できる。
- lando ssh:コンテナのシェルにアクセスする。未指定の場合、デフォルトでアプリケーションサーバーにアクセスするが、-sオプションでサービス名を指定してアクセスできる。
- lando drush:コンテナのアプリケーションサーバー内でdrushコマンドを実行する。Composerでdrushをインストールした場合に使用できる。
Landoの便利な設定 ①環境変数を追加する
Landoで起動した環境内で使用使用可能な環境変数を追加できます。
プロジェクトルート直下に、環境変数を羅列したファイルを用意します。仮にファイル名を .env としておきます。
DB_HOST=database
DB_NAME=drupal9
DB_USER=drupal9
DB_PASS=drupal9
.lando.ymlファイルのトップレベルに env_file キーを追加して、環境変数を用意したファイルの名前を記述します。
name: my-drupal9-app
recipe: drupal9
config:
webroot: web
# 環境変数をセットする
env_file:
- .env
.lando.ymlファイルを編集した後は必ず lando rebuild コマンドで環境を再構築します。
Landoの便利な設定 ②メールサーバーの追加
「drupal9」レシピでは、デフォルトでアプリケーションとデータベースを用意してくれます。メールサーバーは自分で.lando.ymlファイルに設定を記述すれば追加できます。
name: my-drupal9-app
recipe: drupal9
config:
webroot: web
# メールサーバーをサービスとして追加
services:
mailhog:
type: mailhog
hogfrom:
- appserver
.lando.ymlファイルを編集した後は必ず lando rebuild コマンドで環境を再構築します。
lando info コマンドでメールサーバーのURLが確認できます。Drupalサイトで発生したメールをメールサーバーで閲覧できます。
Landoの便利な設定 ③phpMyAdminの追加
メールサーバーの追加と同じ要領で行います。
name: my-drupal9-app
recipe: drupal9
config:
webroot: web
# phpMyAdminをサービスとして追加
services:
phpmyadmin:
type: phpmyadmin
.lando.ymlファイルを編集した後は必ず lando rebuild コマンドで環境を再構築します。
Landoの便利な設定 ④VS CodeでXdebugを使用する
プロジェクトルート直下に .vscode ディレクトリを作成し、launch.jsonとphp.iniの2つのファイルを作成します。
.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9003,
"log": false,
"pathMappings": {
"/app/": "${workspaceFolder}/",
}
}
]
}
.vscode/php.ini
[PHP]
; Xdebug
xdebug.max_nesting_level = 256
xdebug.show_exception_trace = 0
xdebug.collect_params = 0
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_host = ${LANDO_HOST_IP}
; xdebug.log = /tmp/xdebug.log
; Remote settings
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = ${LANDO_HOST_IP}
; xdebug.remote_connect_back = 1
; xdebug.remote_log = /tmp/xdebug_remote.log
.lando.ymlファイルに次のように設定を追加して、lando rebuild コマンドを実行します。
name: my-drupal9-app
recipe: drupal9
config:
webroot: web
# VS CodeでXdebugを使用する設定
xdebug: true
config:
php: .vscode/php.ini
これでVS CodeでXdebugを使用する準備が整いました。VS Codeに移動して、右メニューの虫マーク(Run and Debug)でデバッグ周りの制御が行えます。
まとめ
Drupalローカル開発環境を簡単に構築できる「Lando」の基本的な操作方法から、便利な設定方法までご紹介しました。ぜひお試しください。