前回の記事で、必要なソフトウェアや機能のインストールを行いました。今回は、Sitecore XP 10 の環境をDockerコンテナを使用して展開します。今回は、Sitecoreから提供されるベースライン用のイメージをそのまま使用しますが、本来の開発では、ベースイメージにビルドしたソリューションをコピーした、カスタムイメージを作成する必要があることに注意して下さい。
前回の記事と同じ環境を使用するので、検証環境は次の通りです。
- Windows 10 Pro version 2004
- Sitecore 10 Initial Release
- Docker Desktop for Windows version 2.5.0.0
1. コンテナ展開用のパッケージのダウンロード
Sitecoreがベースラインを設定済みのDocker ComposeおよびKubernetes用の構成ファイルのパッケージを提供しています。Sitecoreのダウンロードポータルにアクセスし、 Download options for Sitecore Container deployments セクションの、Container Deployment Package をクリックします。Installation Guide for Developer Workstation with Containersのリンクからスタンドアロン環境用のSitecoreコンテナのインストールガイドをダウンロードできるので、こちらも参考にしてください。
ダウンロードした zip ファイルを展開します。 Docker compose と Kurbanates 用にフォルダーが分かれているので、今回は、Windows 10上にすべてのロールのコンテナを展開するため、 compose フォルダーに移動します。
compose フォルダーに、現時点で用意されているコンテナのバージョンに対応するフォルダーがあるので、今回はltsc2019 フォルダーに移動します。そのフォルダー配下にSitecoreのトポロジーごとのファイルが用意されているので、xp0フォルダーに移動します。
2. インストールの準備
2.1 .env ファイルの構成
今回は、XP0 (Sitecore XPのスタンドアロン環境)用に用意されているイメージを使用してSitecoreをコンテナに展開します。
PowerShellを起動し、xp0フォルダーに移動します。Sitecoreを展開する前に、同フォルダーにある、 .env ファイルを使用して、Sitecoreコンテナを展開する準備をします。.env ファイルの中身は次のようになっていますので、パラメーターを設定していきます。
COMPOSE_PROJECT_NAME=sitecore-xp0 SITECORE_DOCKER_REGISTRY=scr.sitecore.com/sxp/ SITECORE_VERSION=10.0.0-ltsc2019 SITECORE_ADMIN_PASSWORD= SQL_SA_PASSWORD= TELERIK_ENCRYPTION_KEY= SITECORE_IDSECRET= SITECORE_ID_CERTIFICATE= SITECORE_ID_CERTIFICATE_PASSWORD= SITECORE_LICENSE= CM_HOST=xp0cm.localhost ID_HOST=xp0id.localhost TRAEFIK_IMAGE=traefik:v2.2.0-windowsservercore-1809 TRAEFIK_ISOLATION=hyperv ISOLATION=default
その際、証明書やランダムな文字からなるキーを生成して、.envファイルを更新するユーティリティーツールが用意されているので、そのツールを使用します。次のコマンドを実行して、ユーティリティーのツールをインストールします。
Register-PSRepository -Name "SitecoreGallery" -SourceLocation "https://sitecore.myget.org/F/sc-powershell/api/v2" Install-Module SitecoreDockerTools
インストールしたモジュールを使用して、 .env ファイルの設定を更新していきます。次のコマンドを実行しTelerik用の暗号キーを生成します。自動的に、PowerShellを実行したフォルダーの .env ファイルが更新されます。
Import-Module SitecoreDockerTools Set-DockerComposeEnvFileVariable "TELERIK_ENCRYPTION_KEY" -Value (Get-SitecoreRandomString 128)
さらに、次のコマンドを実行して、Sitecore Identity サーバー用の証明書の設定をします。
Import-Module SitecoreDockerTools Set-DockerComposeEnvFileVariable "SITECORE_IDSECRET" -Value (Get-SitecoreRandomString 64 -DisallowSpecial) $idCertPassword = Get-SitecoreRandomString 12 -DisallowSpecial Set-DockerComposeEnvFileVariable "SITECORE_ID_CERTIFICATE" -Value (Get-SitecoreCertificateAsBase64String -DnsName "localhost" -Password (ConvertTo-SecureString -String $idCertPassword -Force -AsPlainText)) Set-DockerComposeEnvFileVariable "SITECORE_ID_CERTIFICATE_PASSWORD" -Value $idCertPassword
次のコマンドを使って、ライセンスファイルを圧縮して、.envのSITECORE_LICENSE環境変数に設定します。ライセンスファイルのパスは適宜環境に合わせて変更してください。
Import-Module SitecoreDockerTools Set-DockerComposeEnvFileVariable "SITECORE_LICENSE" -Value (ConvertTo-CompressedBase64String -Path "C:\License\license.xml")
最後に、.env ファイルの 下記変数に、Sitecoreのadminユーザーのパスワードと、SQL Serverのsaユーザーのパスワードを設定してください。
SITECORE_ADMIN_PASSWORD= SQL_SA_PASSWORD=
また、CMサーバー(CDサーバー兼用)とSitecore Identityサーバーの名前は、デフォルトでは、下記のように.envファイルで指定されているので必要に応じて変更できます。今回は、デフォルトの名前をそのまま使用します。
CM_HOST=xp0cm.localhost ID_HOST=xp0id.localhost
2.2 hostsファイルの編集
CMサーバーやIDサーバーにブラウザーからアクセスできるようにするために、名前解決のエントリをhostsファイルに追加します。
引き続きPowerShellを使用して次のコマンドを実行してエントリを追加できます。
Add-HostsEntry "xp0cm.localhost" Add-HostsEntry "xp0id.localhost"
または、hostsファイル(C:\Windows\system32\drivers\etc\hots) を直接管理者権限で開いて、次のエントリを追加することもできます。
2.3 証明書の準備
Sitecore 9.3 以降、CM,IDサーバーともにhttps通信での接続がデフォルトになっているため、https用の証明書を準備します。コマンドプロンプトを起動し、xp0フォルダーにカレントフォルダーを移動します。
次のコマンドを実行し、 makecert.exe をダウンロードして、証明書の作成を行います。証明書で、DNS名をxp0cm.localhost, xp0id.localhost と指定していますが、CM,IDサーバーの名前を変更している場合は、適宜変更してください。
IF NOT EXIST mkcert.exe powershell Invoke-WebRequest https://github.com/FiloSottile/mkcert/releases/download/v1.4.1/mkcert-v1.4.1-windows-amd64.exe -UseBasicParsing -OutFile mkcert.exe mkcert -install del /Q /S traefik\certs\* mkcert -cert-file traefik\certs\xp0cm.localhost.crt -key-file traefik\certs\xp0cm.localhost.key "xp0cm.localhost" mkcert -cert-file traefik\certs\xp0id.localhost.crt -key-file traefik\certs\xp0id.localhost.key "xp0id.localhost"
mkcert -install コマンドを実行すると、次のポップアップが表示されるので、Yesをクリックします。
コマンドが正常終了すると、 traefik\certs フォルダーに証明書用のファイルが作成されるはずです。
3. Sitecoreをコンテナを使用して展開
これで準備が整ったはずです、コマンドプロンプトで、xp0フォルダーに移動し、次のコマンドを実行します。
docker-compose up --detach
これまでの設定に問題がなければ コンテナの作成が成功します。
ブラウザーを起動して、https://xp0cm.localhost にアクセスすると、サンプルのホームページを表示されるはずです。編集環境にenvファイルで指定したadminユーザーでログインできます。
コンテナの起動に失敗する場合は、Docker Desktopの設定画面で、'Use Docker Compose V2' のチェックを外して docker-compose up -d コマンドを実行してみてください。
今回は説明は以上です。
さんのコメント: さんのコメント: