ステップバイステップ:DrupalをLagoonで実行する準備#
1. Lagoon Drupal 設定ファイル#
DrupalがLagoonと連携するためには、DrupalにLagoonのことを、LagoonにDrupalのことを教える必要があります。これは、特定のYAMLとPHPファイルをGitリポジトリにコピーします。
Drupalプロジェクトに取り組んでいる場合は、私たちの例のリポジトリにある様々なDrupalサンプルプロジェクトを利用できます。ニーズに合わせて Drupal 8、Drupal 9 だけでなく、データベースの種類などバリエーションも用意されています。開始するには、自分のニーズに合ったリポジトリをクローンしてください!
以下は、LagoonとDrupalに特化したファイルの概要です:
- .lagoon.yml- Lagoonがデプロイメントする内容などを理解するためのメインファイルです。Drupal向けの適切なデフォルト設定が用意されています。編集や変更を行う場合は、- .lagoon.ymlのドキュメントを参照してください。
- docker-compose.yml、- .dockerignore、および- *.dockerfile(または- Dockerfile) - これらのファイルはローカルのDrupal開発環境の実行に使用されます。これらのファイルは、Dockerに対して起動するサービスの種類やビルド方法を指示します。適切なデフォルト設定と、多くのコメント行が含まれています。これらのファイルは、内容が読み取れるよう十分なコメントが付けられていることを目指しています。詳細は、- docker-compose.ymlのドキュメントを参照ください。
- sites/default/*-- .phpと- .ymlのファイルは、Drupalがローカル環境と本番環境の両方でLagoonコンテナと通信する方法をDrupalに指示します。また、開発環境と本番環境で特定の設定をオーバーライド (上書き) するためのシンプルな仕組みも提供します。他のDrupalホスティングシステムとは異なり、LagoonはDrupalの設定ファイルに一切干渉しません。そのため、これらのファイルを自由に編集できます。他のファイルと同様に、適切なデフォルト設定と、一部コメント付きの部分が含まれています。
- drush/aliases.drushrc.php- Drush独自のファイルで、DrushがLagoonのGraphQL APIを使ってサイトエイリアス (サイトの別名) を取得する方法をDrushに指示します。
- drush/drushrc.php- Drushコマンド用の適切なデフォルト設定が用意されています。
.gitignore設定の更新#
設定ファイルをコミットできるように、.gitignoreファイルを確認してください。
Drupalはsites/*/settings*.phpとsites/*/services*.ymlを.gitignoreでコミットから除外するように初期設定されています。Lagoon 環境では機密情報は Git リポジトリに保存しないので、この除外設定を削除してください。
Drupal 8のWEBROOTに関する注意事項#
残念ながら、DrupalコミュニティではWEBROOTフォルダ名の標準化がまだ決まっていません。Drupalをwebディレクトリ内に配置するプロジェクトもあれば、docrootや別の場所に入れるプロジェクトもあります。LagoonのDrupal設定ファイルは、Drupalがwebディレクトリ内に配置されていることを前提としています。もしあなたのDrupalの構成が異なる場合は、設定ファイルをそれに合わせて修正してください。
composer.jsonに関する注意事項#
Composer を使って Drupal をインストールした場合、composer.jsonを確認し、nameがdrupal/drupalでないことを確認してください。この名前は Drush やその他の Drupal 関連ツールと競合してしまう可能性がありますので、myproject/drupalなど、別の名前にしてください。
2. docker-compose.ymlのカスタマイズ#
lagoon-projectとLAGOON_ROUTEの値を忘れずにカスタマイズし、サイト名とアクセスしたいURLに書き換えてください。以下に例を示します:
x-environment:
  &default-environment
    LAGOON_PROJECT: *lagoon-project
    # Route that should be used locally. If you are using pygmy, this route *must* end with .docker.amazee.io.
    LAGOON_ROUTE: http://drupal-example.docker.amazee.io
3. イメージのビルド#
まず、定義されたイメージをビルドする必要があります:
このコマンドを実行すると、docker-compose.yml内でbuild:の定義があるすべてのコンテナのDockerイメージをビルドするようにdocker-composeに指示します。通常、Drupalではcli、nginx、phpのイメージが該当します。これは、特定のビルドコマンド(composer installなど)を実行したり、特定の環境変数(WEBROOTなど)をイメージに注入するためです。
通常、Drupal コードを編集するたびにビルドを行う必要はありません (コードはホストからコンテナにマウントされるため)。とはいえ、ビルドをしても何らかの問題が生じるわけではありません。さらに、Lagoon はデプロイ中にまったく同じ Docker イメージをビルドするので、docker-compose buildコマンドをもう一度実行することで、デプロイ時にもビルドが正常に動作することを確認できます。
4. コンテナの起動#
イメージがビルドされたので、コンテナを起動できます:
これにより、すべてのコンテナが起動します。コマンドが完了した後、docker-compose psですべてのコンテナが完全に立ち上がっているか、クラッシュしていないかを確認できます。問題がある場合は、docker-compose logs -f [servicename]でログを確認してください。
5. composer installを再実行します(composerプロジェクトのみ)#
ローカルの開発環境では、すべての依存関係をダウンロードしてインストールしたいと思うでしょう。そのため、cliコンテナに接続してcomposer installを実行します:
少し奇妙に感じるかもしれませんが、ビルド手順ですでにcomposer installが実行されているため、説明を加えさせていただきます:
- ホスト上のファイルを編集して、すぐにコンテナで利用できるようにするため、デフォルトのdocker-composer.ymlファイルは、すべてのフォルダーをコンテナ内にマウントしています (ボリュームセクションの.:/app:delegatedがこれに該当します)。つまり、Dockerビルド時にインストールされたすべての依存関係は、ホスト上のファイルで上書きされます。
- ローカル開発環境においては、composer.jsonでrequire-devとして定義された依存関係も存在させる必要があるでしょう。一方、本番環境では、そうした依存関係はただ無駄な容量を消費するだけです。そのため、Dockerfile内ではcomposer install --no-devを実行し、手動でcomposer installを実行します。
すべて問題なく動作している場合、docker-compose.yml (例えば http://drupal.docker.amazee.io)で定義されたLAGOON_ROUTEを開くと、Drupalエラーが表示されるはずです。心配しないでください。今の段階では問題ありません。重要なのは、Drupalサイトが読み込まれようとしていることです。
500エラーや同様のエラーが発生した場合は、Composerによってすべてが正しく読み込まれたことを確認してください。
6. ステータスの確認とDrupalのインストール#
いよいよDrupalをインストールしますが、その前にすべてが機能していることを確認したいと思います。そのためにDrushを使用することをお勧めします:
これにより、以下のような結果が返されるはずです:
[drupal-example]cli-drupal:/app$ drush status
[notice] Missing database table: key_value
Drupal version       :  8.6.1
Site URI             :  http://drupal.docker.amazee.io
Database driver      :  mysql
Database hostname    :  mariadb
Database port        :  3306
Database username    :  drupal
Database name        :  drupal
PHP binary           :  /usr/local/bin/php
PHP config           :  /usr/local/etc/php/php.ini
PHP OS               :  Linux
Drush script         :  /app/vendor/drush/drush/drush
Drush version        :  9.4.0
Drush temp           :  /tmp
Drush configs        :  /home/.dr ush/drush.yml
                        /app/vendor/drush/drush/drush.yml
Drupal root          :  /app/web
Site path            :  sites/default
警告
次のステップ前に、pygmyに公開鍵について伝える必要があるかもしれません。
Permission denied (publickey)のようなエラーが出た場合は、こちらからSSHキーの追加方法に関するドキュメントを参照ください: pygmy - sshキーの追加
次にDrupalをインストールします(既存のSQLファイルをインポートしたい場合は、ステップ7へスキップしてください。ただし、すべてが機能することを確認するために、最初からクリーンなDrupalインストールをお勧めします。))。
以下のような出力が表示されるはずです:
[drupal-example]cli-drupal:/app$ drush site-install
You are about to DROP all tables in your 'drupal' database. Do you want to continue? (y/n): y
Starting Drupal installation. This takes a while. Consider using the --notify global option.
Installation complete.  User name: admin  User password: a7kZJekcqh
Congratulations, you installed Drupal!
LAGOON_ROUTEで定義されているURLにアクセスすると、新しくインストールされたDrupalサイトが表示されます。おめでとうございます!

7. 既存のデータベースダンプをインポートする#
既に既存のDrupalサイトを持っている場合、そのデータベースをローカルサイトにインポートしたいと思うでしょう。
データベースダンプを作成する方法は多数あります。現在のホスティングプロバイダーにDrushがインストールされている場合は、以下のように使用できます:
これで、データベース全体を含むdump.sqlファイルが作成されます。
このファイルをGitリポジトリにコピーし、cliに接続すると、その中にファイルが表示されるはずです:
[drupal-example]cli-drupal:/app$ ls -l dump.sql
-rw-r--r--    1 root     root          5281 Dec 19 12:46 dump.sql
現在のデータベースを削除し、ダンプをインポートできます。
プロジェクトのURLにアクセスして、すべてが正常に動作することを確認してください。これで、Drupalサイトが正常に機能しているはずです!
8. Drupalファイル ディレクトリ#
Drupalサイトには、ファイルのディレクトリも必要です。このフォルダ全体はDockerコンテナ内にマウントされるため、ファイルを正しいフォルダに追加してください (おそらくweb/sites/default/files、sites/default/filesまたは同様のフォルダです)。設定したWEBROOTを覚えておいてください - プロジェクトごとに異なる場合があるかもしれません
9. 完了#
ローカル設定が完了しました。Lagoon チームは、皆様の楽しい Drupaling を応援しています!
