最初の Sitecore インスタンスを実行する
このトピックでは、最小限の設定ですぐに Sitecore Experience Platform - Single (XP0) インスタンスを立ち上げる方法をご紹介します。
このトピックでは、簡単にするために、Sitecore Experience Platform - Single (XP0) の設定を使用していますが、どのような設定でも同じアプローチで開始することができます。
各 Sitecore トポロジー用の Docker Compose ファイルは、https://dev.sitecore.com からダウンロードできる Sitecore コンテナー サポート パッケージに含まれています。
このトピックは、ローカル環境が Windows で Docker を使用して開発するために設定されていることを前提としています。詳細については「環境設定」を参照してください。Windows コンテナーに切り替えたことを確認してください。
また、有効な Sitecore のライセンス ファイルも必要です。
デフォルトの Sitecore コンテナー構成は特定のポートを使用します。競合を避けるために、次のポートが別のプロセスによって使用されていないことを確認してください: 443、8079、8081、8984、および14330。
Docker のトラブルシューティングアドバイスも可能です。
Docker サンプル リポジトリのクローンを作成する
まず、Docker Examples リポジトリのクローンを、コンピューター上のどこか (C:\sitecore\docker-examples\
など) に作成します。次の手順では、このフォルダーを使用することを前提としています。このトピックでは、getting-started フォルダーを使用します。
[PowerShell] プロンプトを開き、作業の開始フォルダーに移動します。次のファイルが含まれています。
-
docker-compose.yml
と.env
: Docker Compose のファイルの種類です。これらはバニラの Sitecore インスタンスの起動に必要な主要なファイルです。Sitecore コンテナー サポート パッケージに含まれています。 -
mssql-data
、solr-data
、traefik
- Sitecore インスタンス内の Docker コンテナーによって利用されるサポートフォルダです。Sitecore コンテナー サポート パッケージに含まれています。 -
init.ps1
とclean.ps1
- ヘルパー スクリプトの例。Sitecore コンテナー サポート パッケージには含まれません 。
これらのそれぞれについては、次のセクションで詳しく説明します。
Docker Compose ファイル
-
docker-compose.yml
この Compose ファイルは、
docker-compose
コマンドが使用するメインの設定ファイルです。異なるコンテナー (サービス と呼ばれる) とその設定に関する情報が含まれています。Sitecore の場合、サービスは通常、トポロジを構成する個々の Sitecore ロール (mssql、solr、id、cm など) を表します。
-
.env
これは環境ファイルです。ここに書かれている値は、Compose ファイルで参照されている環境変数のデフォルト値を提供したり (たとえば、
SITECORE_DOCKER_REGISTRY
、Compose の設定に使用したり (たとえば、COMPOSE_PROJECT_NAME
) します。
環境変数は、構成設定をコンテナーに渡すための推奨される方法です。Sitecore のコンテナーで環境変数がどのように使用されているかは、docker-compose.yml
ファイルで確認できます。たとえば、mssql
サービスでは、SQL Server の SA のパスワード (SA_PASSWORD
) を設定するために環境変数を設定します。
mssql:
isolation: ${ISOLATION}
image: ${SITECORE_DOCKER_REGISTRY}sitecore-xp0-mssql:${SITECORE_VERSION}
environment:
SA_PASSWORD: ${SQL_SA_PASSWORD}
SITECORE_ADMIN_PASSWORD: ${SITECORE_ADMIN_PASSWORD}
ACCEPT_EULA: "Y"
SQL_SERVER: mssql
ports:
- "14330:1433"
この値は、変数置換 (${SQL_SA_PASSWORD}
) を使用して .env
ファイルから取得されます。
準備
リポジトリには、すべての準備手順を自動的に実行するスクリプトとして、init.ps1
が含まれています。
このスクリプトを実行するには:
-
[PowerShell 管理者] プロンプトを開きます。
-
次のコマンドを実行し、
-LicenseXmlPath
を Sitecore ライセンスファイルの場所に置き換えます。RequestResponseshell.\init.ps1 -LicenseXmlPath C:\License\license.xml
スクリプトを使用しない場合は、次のセクションの手順に従ってください。
SitecoreDockerTools のインストール
SitecoreDockerTools PowerShell モジュールには、Docker ベースの Sitecore 開発で使用するさまざまなヘルパー コマンドレットがあります。これらのコマンドは、準備の手順を大幅に簡略化します (ただし、必須ではありません)。
PowerShell から次のコマンドを実行してインストールするか、SitecoreDockerTools MyGet ページの指示に従ってください。
Register-PSRepository -Name "SitecoreGallery" -SourceLocation "https://sitecore.myget.org/F/sc-powershell/api/v2"
Install-Module SitecoreDockerTools
環境ファイルの入力
.env
ファイルには、次のような未割り当ての値があります。
COMPOSE_PROJECT_NAME=sitecore-xp0
SITECORE_DOCKER_REGISTRY=scr.sitecore.com/sxp/
SITECORE_VERSION=10.1.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
SOLR_CORE_PREFIX_NAME=sitecore
# You should change the shared secret to a random string and not use the default value
MEDIA_REQUEST_PROTECTION_SHARED_SECRET=HQ(NjM(u6_5koVla-cTf4ta8x1h6Sb+ZcUQrULUz-0Afpx0cx-NuMtIoQkpDFmX5
「コンテナーを使用した開発者ワークステーションのインストール ガイド」では、これらの各変数について、どのような値を指定できるかを説明しています。
この時点で値が指定されている変数を更新する必要はありませんが、空の変数には値を指定する必要があります。
-
SITECORE_ADMIN_PASSWORD
とSQL_SA_PASSWORD
に任意のパスワード設定をします。注記SQL SA のパスワードは、SQL Server の複雑さの要件を満たす必要があります。
SitecoreDockerTools モジュールを使って、PowerShell でこれらのパスワードを設定したり生成したりすることもできます。
init.ps1
スクリプトでは、両方ともPassword12345
に設定されます。 -
Telerik 暗号化キーを設定するには、環境ファイルがあるフォルダーで、管理者として次の PowerShell スクリプトを実行します。
RequestResponseshellImport-Module SitecoreDockerTools Set-DockerComposeEnvFileVariable "TELERIK_ENCRYPTION_KEY" -Value (Get-SitecoreRandomString 128)
これにより、SitecoreDockerTools モジュールがセッションにインポートされ、この 2 つのコマンドレットを使用して
TELERIK_ENCRYPTION_KEY
変数が設定されます。-
Set-DockerComposeEnvFileVariable
: Docker Compose の.env
ファイルの変数値を設定します。 -
Get-SitecoreRandomString
: パスワードまたはキーとして使用されるランダムな文字列を返します。
-
-
Identity Server 変数を設定するには、次の PowerShell スクリプトを実行します。
RequestResponseshellImport-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
これにより、SitecoreDockerTools のコマンドレットを使用して、
SITECORE_IDSECRET
、SITECORE_ID_CERTIFICATE
、およびSITECORE_ID_CERTIFICATE_PASSWORD
の変数を設定します。-
Get-SitecoreCertificateAsBase64String
: 新しい自己署名証明書を生成し、パスワードで保護された Base64 エンコード形式で証明書を返します。
-
-
Sitecore ライセンス変数を設定するには、次の PowerShell スクリプトを実行します。
-Path
は Sitecore ライセンス ファイルの場所に置き換えます。RequestResponseshellImport-Module SitecoreDockerTools Set-DockerComposeEnvFileVariable "SITECORE_LICENSE" -Value (ConvertTo-CompressedBase64String -Path "C:\License\license.xml")
Sitecore のライセンス ファイルは非常に大きく、すべての環境変数に対して Windows で許可されている最大サイズ内に収まるように、圧縮して Base64 エンコードする必要があります。SitecoreDockerTools の
ConvertTo-CompressedBase64String
コマンドレットがこれを行います。注記Docker Compose 環境ファイルの代わりに Windows で環境変数を設定することにより、複数の Sitecore インスタンス間で変数を再利用できます。
注記あるいは、
license.xml
ファイルのあるフォルダを各サービスにマウントして、SITECORE_LICENSE_LOCATION
変数を設定することもできます。xConnect サービスの場合、これはライセンス ファイルを含むフォルダーでなければなりません。その他のサービスでは、ファイル自体へのパスでなければなりません。
TLS/HTTPS 証明書の設定
Sitecore では、Docker Compose のデフォルトのリバース プロキシまたはエッジ ルーターとして Traefik を使用しています。getting-started\traefik フォルダーには次のものが入っています。
-
certs
生成した証明書を配置する空のフォルダー。
-
config/dynamic/certs_config.yaml
Traefik コンテナーによって使用される Traefik 設定ファイル。
この traefik フォルダー全体は、docker-compose.yml
ファイル内の Docker ボリュームで、Traefik コンテナーを使用できるようになっています。
traefik:
[...]
volumes:
- source: \\.\pipe\docker_engine
target: \\.\pipe\docker_engine
type: npipe
- ./traefik:C:/etc/traefik
[...]
traefik サービスは、相対的な ./traefik フォルダーを、C:/etc/traefik の実行中のコンテナーにマッピングします。
このパスは Traefik のサービス設定で使用され、--providers.file.directory
が C:/etc/traefik/config/dynamic
(certs_config.yaml
ファイルがある場所) として指定されます。詳しくは、Traefik のドキュメントを参照してください。
また、certs_config.yaml
ファイルでは、certsフォルダー内の証明書を参照するためにボリュームを使用しています。
tls:
certificates:
- certFile: C:\etc\traefik\certs\xp0cm.localhost.crt
keyFile: C:\etc\traefik\certs\xp0cm.localhost.key
- certFile: C:\etc\traefik\certs\xp0id.localhost.crt
keyFile: C:\etc\traefik\certs\xp0id.localhost.key
mkcert をインストールする
mkcert ユーティリティを使って、必要な証明書を生成します。
mkcert をインストールするには:
-
最新のWindows実行可能ファイルをダウンロードします。
-
ファイル名を
mkcert.exe
に変更します。 -
ファイルを環境変数 PATH に含まれるディレクトリ (
C:\Windows\system32
など) に移動します。 -
コマンド プロンプトを管理者モードで開き、
mkcert -install
を実行します。
Chocolatey を使っている場合は、代わりに次のコマンドで mkcert をインストールすることができます。
choco install mkcert
mkcert -install
証明書の生成
getting-started フォルダー内で次のコマンドを実行し、必要な証明書を生成します。
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"
Windows ホスト ファイル エントリを追加します。
Windows の hosts
ファイルにxp0cm.localhost
と xp
0id.localhost
のホスト名を追加し、ループバック IP アドレス 127.0.0.1 を指すようにします。
127.0.0.1 xp0cm.localhost
127.0.0.1 xp0id.localhost
代わりに、SitecoreDockerTools の Add-HostsEntry
コマンドレットを使用することもできます。
Add-HostsEntry "xp0cm.localhost"
Add-HostsEntry "xp0id.localhost"
Sitecore を起動します。
Sitecore を起動するには:
-
Compose ファイルと同じフォルダーで次のコマンドを実行します。
RequestResponseshelldocker-compose up -d
このコマンドは次のことを行います。
-
Sitecore コンテナー レジストリから必要なすべてのイメージをダウンロードします。
-
使用するデフォルトのネットワークを作成します。
-
設定されたサービスごとにコンテナーを作成します。
-
設定されたエントリ ポイントでコンテナーを起動します。
-d
(デタッチ モード) は、Docker に、バックグラウンドでコンテナーを起動し、実行したままにするよう指示します。これを省略すると、コンテナーのログが代わりに出力にストリームされ、プロンプトに戻るにはCtrl
+C
を入力しなければなりません。これを行うと、コンテナーの停止と削除も行われます。
このコマンドやこのガイドで使われているその他の一般的なコマンドのクイックリファレンスについては、Sitecore Docker クイック ガイド を参照してください。
実行中のコンテナーを表示する
作成したコンテナーを表示するには:
-
docker ps
コマンドを実行します。RequestResponseshelldocker ps
これは、ステータスがUp で示される、すべての実行中のコンテナーのリストを表示します。また、コンテナー ID、使用されているイメージ、コンテナーが公開されているポートも表示されます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75684e9146f2 traefik:v2.2.0-windowsservercore-1809 "/traefik --ping --a…" 7 seconds ago Up 3 seconds (healthy: starting) 80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8079->8080/tcp sitecore-xp0_traefik_1
67be2b1350e1 scr.sitecore.com/platform/sitecore-xp0-cm:10.0.0-ltsc2019 "C:\\LogMonitor\\LogMo…" 21 seconds ago Up 11 seconds (healthy) 80/tcp sitecore-xp0_cm_1
e553b6ab0fb5 scr.sitecore.com/platform/sitecore-xp0-cortexprocessingworker:10.0.0-ltsc2019 "C:\\LogMonitor\\LogMo…" 21 seconds ago Up 11 seconds (healthy) sitecore-xp0_cortexprocessingworker_1
8d40d14da8a2 scr.sitecore.com/platform/sitecore-xp0-xdbautomationworker:10.0.0-ltsc2019 "C:\\LogMonitor\\LogMo…" 21 seconds ago Up 12 seconds (healthy) sitecore-xp0_xdbautomationworker_1
b4279d4f6de7 scr.sitecore.com/platform/sitecore-id:10.0.0-ltsc2019 "C:\\LogMonitor\\LogMo…" 27 seconds ago Up 21 seconds (healthy) 80/tcp sitecore-xp0_id_1
41418243fd0d scr.sitecore.com/platform/sitecore-xp0-xdbsearchworker:10.0.0-ltsc2019 "C:\\LogMonitor\\LogMo…" 27 seconds ago Up 20 seconds (healthy) sitecore-xp0_xdbsearchworker_1
6f4e64033031 scr.sitecore.com/platform/sitecore-xp0-xconnect:10.0.0-ltsc2019 "C:\\LogMonitor\\LogMo…" 27 seconds ago Up 21 seconds (healthy) 0.0.0.0:8081->80/tcp sitecore-xp0_xconnect_1
33931b923acb scr.sitecore.com/platform/sitecore-xp0-mssql:10.0.0-ltsc2019 "powershell -Command…" About a minute ago Up 56 seconds (healthy) 0.0.0.0:14330->1433/tcp sitecore-xp0_mssql_1
3b362d8ed9a6 scr.sitecore.com/platform/sitecore-xp0-solr:10.0.0-ltsc2019 "powershell -Command…" About a minute ago Up 56 seconds 0.0.0.0:8984->8983/tcp sitecore-xp0_solr_1
いくつかのステータスが (health: starting)
となっていることに気づくかもしれません。これは、設定されたヘルスチェック (docker-compose.yml
ファイルの healthcheck
を参照) を満たすためにまだウォームアップしていることを意味します。docker ps
コマンドを再度実行すると、最終的にこれらがすべて (healthy)
に変更されているのがわかります。
Sitecore コンテナーにアクセス
リバースプロキシがサービスを提供するコンテナーには、設定されたホスト名を使って HTTPS プロトコルでアクセスします (例: https://xp0cm.localhost。
公開されている残りのコンテナーは、特定のポートを使用するようにあらかじめ設定されています (docker-compose.yml
ファイルの ports
を参照)。Docker Desktop for Windows のデフォルト設定では、これらのポートに localhost
でアクセスします。
つまり、Sitecore Experience Platform - Single (XP0) のコンテナーには次のようにアクセスできます。
-
Sitecore Content Management (cm): https://xp0cm.localhost
-
Sitecore Identity Server (id): https://xp0id.localhost
-
Sitecore xConnect Server (xconnect): http://localhost:8081
-
Apache Solr (solr): http://localhost:8984
-
Microsoft SQL Server (mssql): localhost,14330
-
Traefik: http://localhost:8079
SQL Server への接続について
ポートを使って SQL Server に接続する場合は、構文が若干異なります。前述のように、コロン ":" の代わりにコンマ "," を使用する必要があります。sa アカウントと .env
ファイルで SQL_SA_PASSWORD
に指定した値 (init.ps1
ファイルではデフォルトで Password12345
) を使用して、SQL Server 認証で接続できます。
スキーマへの入力とインデックスの更新
Sitecore コンテナー環境には、起動時に実行される solr-init
コンテナーが含まれており、Solr コンテナーに必要なコアを作成して(まだ存在していない場合)、終了します。これが期待される動作です。
ただし、このコンテナーはSolrが管理するスキーマを投入したり、インデックスを再構築したりすることはありません。これは、手動またはカスタムスクリプトで行う必要があります。この作業を行わないと、コンテナーのログに Solr 関連のエラーが表示されることがあります。
管理されたスキーマを生成し、インデックスを更新するには:
-
Sitecore に
admin
でログインします。 -
[コントロール パネル] を開き、すべての検索インデックスに管理スキーマを生成します。
-
そのまま [コントロール パネル] で、検索インデックスの再構築を行います。
インスタンスを確認する
インスタンスを確認するには:
-
https://xp0cm.localhost を参照すると、Sitecore のデフォルトの Web サイトが表示されます。
-
https://xp0cm.localhost/sitecore にアクセスし、Sitecore にログインできることを確認します。"ユーザー名" には "
admin
" を、"パスワード" には.env
ファイルでSITECORE_ADMIN_PASSWORD
に指定した値(Password12345
はinit.ps1
ファイルのデフォルト) を使用します。 -
次のコマンドでログを調べて、すべてのコンテナーからのログを確認します。
RequestResponseshelldocker-compose logs -f --tail 20
-f
(または--follow
) オプションは、Docker に出力のストリーム化を指示し、--tail
オプションは、最初のログ出力を各コンテナーの最後の20行に制限しています。ログの前にコンテナーのプレフィックスがついているのがわかります。 -
終わったら「
Ctrl+C
」と入力すると、プロンプトに戻ります。
Sitecore を停止
Sitecore インスタンスを停止する。
-
次のコマンドを実行します。
RequestResponseshelldocker-compose stop
これによりコンテナーは停止しますが、削除はされません。その後、
docker-compose start
のコマンドで再度開始できます。 -
コンテナーを停止して削除するには:
RequestResponseshelldocker-compose down
これにより、コンテナーが停止しますが、コンテナーと作成されたネットワークも削除されます。
-
コンテナーを停止して削除し、イメージも削除するには:
--rmi <all/local>
を追加します。
開発ワークフローには、これらのコマンドの組み合わせが含まれます。コマンドは、トポロジに応じて比較的高速です。
永続ストレージのクリーンアップ
mssql-data フォルダーと solr-data フォルダーにファイルが存在するようになりました。これらはtraefik フォルダーと同様に、Compose ファイルで ボリューム としてマウントされたフォルダーです。これらの設定は docker-compose.yml
ファイルで行います。
mssql:
[...]
volumes:
- type: bind
source: .\mssql-data
target: c:\data
solr:
[...]
volumes:
- type: bind
source: .\solr-data
target: c:\data
フォルダーは、mssql サービスのデータ ベース ファイルとsolr サービスのインデックス ファイルの永続的なストレージとして使用されます。つまり、docker-compose down
コマンドを実行しても、データベースとインデックスのデータは残ります。
ただし、Sitecore の管理者パスワードを変更した場合など、新たにスタートしたい場合や、データが古いためにこれらをクリアする必要がある場合もあります。
これらのフォルダー内のファイルを手動で削除するか、clean.ps1
スクリプトを使用することができます。
ファイルを削除するには:
-
getting-started フォルダー で PowerShell 管理者プロンプトを開きます。
-
次のコマンドを実行します。
RequestResponseshell.\clean.ps1