Dockerコンテナを使用したSitecore 10のインストール その2 展開

samatsu 11/7/2020 1592 N/A Sitecore Container

前回の記事で、必要なソフトウェアや機能のインストールを行いました。今回は、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 コマンドを実行してみてください。

今回は説明は以上です。