Docker で Sitecore XP インスタンスを立ち上げる

2021/08/30に公開

Sitecore Experience Platform - Single (XP0) インスタンスを Docker を使って立ち上げる方法をご紹介します。
この方法によるメリットは次の2点です。

  1. Solr や SQL Server, IIS などを準備する手間が省け、開発環境を迅速に用意することが可能
  2. 各開発者に個別の環境を用意することが可能になり、モジュールの変更やテストが容易になる

前提条件

  • Windows 10 Professional またはEnterprise バージョン 1903 以降
  • Windows Server 2019 (2021 は 2021/08/30 現在サポート対象外なのでご注意ください)
  • Hyper-V が有効化可能なハードウェア
  • 16GB 以上の RAM (32GB以上を推奨)

メモリの制限が少し厳しいかもしれません。今回は Azure の VM で試したいと思います。
前提条件の詳細についてはこちらを参照ください。
https://doc.sitecore.com/ja/developers/101/developer-tools/set-up-the-environment.html

環境設定

Azure の VM 上に Windows Server 2019 を立ち上げます。環境設定については原水さんのブログを参照ください。
https://haramizu.com/blog/2021/05/22/Windows-Server-Docker

今回試す環境に Linux kit は必要ありません。
料金を節約したい方はスポットインスタンスを利用しても良いですが、8時から10時あたりのピークタイムには強制終了となることが稀にあります。

インスタンスを実行

こちらの手順通り実施していきます。
https://doc.sitecore.com/ja/developers/101/developer-tools/run-your-first-sitecore-instance.html

Docker サンプル リポジトリのクローンを作成

PowerShell や コマンドプロンプトにて、次のコマンドを実行します。

git clone https://github.com/Sitecore/docker-examples.git

ライセンスファイルを準備

起動にライセンスファイルが必要となります。ライセンスファイルは次の場所に格納します。

C:\License\license.xml

mssql-data に NETWORK SERVICE ユーザーの権限を追加

エクスプローラーにて docker-examples\getting-started に移動し、mssql-data を右クリックして [properies] を開いてください。
[Security] タブにて NETWORK SERVICE ユーザーを追加し、 [Modify] と [Write] 権限を与えます。

こちらはドキュメントに記載が無い部分なのですが必ず実施してください。mssql が DB を作成するのに必要な権限となります。詳細はこちらのリンクを参照してください。
https://sitecore.stackexchange.com/questions/27034/docker-compose-up-d-fails-with-unhealthy-xconnect-and-cm

init.ps1 を実行

PowerShell を管理者モードで立ち上げます。スタートメニューを右クリックして [Windows PowerShell(Admin)] をクリックします。

docker-examples\getting-started フォルダに移動し次のコマンドを実行します。

.\init.ps1 -LicenseXmlPath C:\License\license.xml

途中証明書のインストールが聞かれるので [Yes] をクリック。

成功例です。

こちらのスクリプトでは .env ファイルを作成しており、初期パスワードなどが記載されています。

Sitecore を起動

次のコマンドを実行します。初回はコンテナイメージのダウンロードサイズが数GBあるため、10分以上かかることが多いですので気長にお待ちください。

docker-compose up -d

正常に起動した場合、次のような表示になり、複数のコンテナが done と表示されます。

尚、2回目以降の起動はキャッシュが効きますので数秒とまではなりませんが数分で起動するようになります。

インスタンスを確認

ここからは通常の Sitecore にアクセスする方法と同じです。

ブラウザにて https://xp0cm.localhost/ を開きますと、次のような初期画面が表示されます。初回アクセスはモジュールの読み込みなどがありますので数十秒かかります。

https://xp0cm.localhost/sitecore にて管理画面を開きます。認証パスワードは .env に記載されています。デフォルトではユーザーは admin パスワードは Password12345 です。

Experience Editor を起動してみました。見たまま編集で「Sitecore Experience Platform」の語尾を、「Sitecore Experience Platform!!」に変更して Publish します。

再び https://xp0cm.localhost/ を開きますと、変更が反映されていることが確認できました。

Solr スキーマの再作成と検索インデックスの再作成

最初に初期化が必要です。管理画面にて [Control Panel] から行います。

スキーマの再作成

[Populate Solr Managed Schema] をクリックし、[Populate] ボタンをクリック

検索インデックスの再作成

[indexing Manager] をクリックし、[Rebuild] ボタンをクリック

インスタンスを停止

PowerShell にて docker-compose stop を実行することで止まります。
コンテナやネットワークも削除したい場合は docker-compose down を実施してください

まとめ

以上で Docker を使って、クリーンな環境で Sitecore XP インスタンスを立ち上げる方法をご紹介しました。今回は Azure の VM を利用しましたが、当然 AWS や GCP でも可能ですし、皆様お手持ちの PC でもスペックさえあれば実施可能です。

次回はカスタマイズした環境をデプロイする方法をご紹介したいと思います。

Appendix

利用メモリについて

xp0 の場合は大体 16GB に収まります。ですが、カスタムモジュールなどを読み込めば読み込むほど利用メモリが増えますので、32GB以上を推奨します。今回は64GBのメモリを用意したところ、ストレス無く快適に動きました。

Docker がどれくらいメモリを利用しているのかは docker stats で見るのがわかりやすいです。[PRIV WORKING SET] で sitecore-xp0_cm_1 が約 1.3GB のメモリを消費しています。

トラブルシューティング

別ページにまとめました。この記事中の手順でなにか問題が起こった場合参照してください。

https://zenn.dev/nnasaki/articles/c7505ef866c430

Discussion