最初の Sitecore インスタンスを実行する

概要

このトピックでは、カスタマイズを実行せずに 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 Examples リポジトリのクローンを、コンピューター上のどこか (C:\sitecore\docker-examples\ など) に作成します。次の手順では、このフォルダーを使用することを前提としています。このトピックでは、getting-started フォルダーを使用します。

[PowerShell] プロンプトを開き、作業の開始フォルダーに移動します。次のファイルが含まれています。

  • docker-compose.yml.env : Docker Compose のファイルの種類です。これらはバニラの Sitecore インスタンスの起動に必要な主要なファイルです。Sitecore コンテナー サポート パッケージに含まれています

  • mssql-datasolr-datatraefik - Sitecore インスタンス内の Docker コンテナーによって利用されるサポートフォルダです。Sitecore コンテナー サポート パッケージに含まれています

  • init.ps1clean.ps1 - ヘルパー スクリプトの例。Sitecore コンテナー サポート パッケージには含まれません

これらのそれぞれについては、次のセクションで詳しく説明します。

  • 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 が含まれています。

このスクリプトを実行するには:

  1. [PowerShell 管理者] プロンプトを開きます。

  2. 次のコマンドを実行し、-LicenseXmlPath を Sitecore ライセンスファイルの場所に置き換えます。

    .\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

コンテナーを使用した開発者ワークステーションのインストール ガイド」では、これらの各変数について、どのような値を指定できるかを説明しています。

この時点で値が指定されている変数を更新する必要はありませんが、空の変数には値を指定する必要があります。

  1. SITECORE_ADMIN_PASSWORDSQL_SA_PASSWORD に任意のパスワード設定をします。

    注記

    SQL SA のパスワードは、SQL Server の複雑さの要件を満たす必要があります。

    SitecoreDockerTools モジュールを使って、PowerShell でこれらのパスワードを設定したり生成したりすることもできます。init.ps1 スクリプトでは、両方とも Password12345 に設定されます。

  2. Telerik 暗号化キーを設定するには、環境ファイルがあるフォルダーで、管理者として次の PowerShell スクリプトを実行します。

    Import-Module SitecoreDockerTools
    Set-DockerComposeEnvFileVariable "TELERIK_ENCRYPTION_KEY" -Value (Get-SitecoreRandomString 128)

    これにより、SitecoreDockerTools モジュールがセッションにインポートされ、この 2 つのコマンドレットを使用して TELERIK_ENCRYPTION_KEY 変数が設定されます。

    • Set-DockerComposeEnvFileVariable: Docker Compose の .env ファイルの変数値を設定します。

    • Get-SitecoreRandomString: パスワードまたはキーとして使用されるランダムな文字列を返します。

  3. Identity Server 変数を設定するには、次の PowerShell スクリプトを実行します。

    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

    これにより、SitecoreDockerTools のコマンドレットを使用して、SITECORE_IDSECRETSITECORE_ID_CERTIFICATE、およびSITECORE_ID_CERTIFICATE_PASSWORD の変数を設定します。

    • Get-SitecoreCertificateAsBase64String: 新しい自己署名証明書を生成し、パスワードで保護された Base64 エンコード形式で証明書を返します。

  4. Sitecore ライセンス変数を設定するには、次の PowerShell スクリプトを実行します。-Path は Sitecore ライセンス ファイルの場所に置き換えます。

    Import-Module SitecoreDockerTools
    Set-DockerComposeEnvFileVariable "SITECORE_LICENSE" -Value (ConvertTo-CompressedBase64String -Path "C:\License\license.xml")

    Sitecore のライセンス ファイルは非常に大きく、すべての環境変数に対して Windows で許可されている最大サイズ内に収まるように、圧縮して Base64 エンコードする必要があります。SitecoreDockerToolsConvertTo-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.directoryC:/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 をインストールするには:

  1. 最新のWindows実行可能ファイルをダウンロードします。

  2. ファイル名をmkcert.exe に変更します。

  3. ファイルを環境変数 PATH に含まれるディレクトリ (C:\Windows\system32 など) に移動します。

  4. コマンド プロンプトを管理者モードで開き、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.localhostxp0id.localhost のホスト名を追加し、ループバック IP アドレス 127.0.0.1 を指すようにします。

127.0.0.1   xp0cm.localhost
127.0.0.1   xp0id.localhost

代わりに、SitecoreDockerToolsAdd-HostsEntry コマンドレットを使用することもできます。

Add-HostsEntry "xp0cm.localhost"
Add-HostsEntry "xp0id.localhost"

Sitecore を起動するには:

  • Compose ファイルと同じフォルダーで次のコマンドを実行します。

    docker-compose up -d

このコマンドは次のことを行います。

  • Sitecore コンテナー レジストリから必要なすべてのイメージをダウンロードします。

  • 使用するデフォルトのネットワークを作成します。

  • 設定されたサービスごとにコンテナーを作成します。

  • 設定されたエントリ ポイントでコンテナーを起動します。

注記

-d (デタッチ モード) は、Docker に、バックグラウンドでコンテナーを起動し、実行したままにするよう指示します。これを省略すると、コンテナーのログが代わりに出力にストリームされ、プロンプトに戻るにはCtrl+C を入力しなければなりません。これを行うと、コンテナーの停止と削除も行われます。

このコマンドやこのガイドで使われているその他の一般的なコマンドのクイックリファレンスについては、Sitecore Docker クイック ガイド を参照してください。

作成したコンテナーを表示するには:

  • docker ps コマンドを実行します。

    docker 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) に変更されているのがわかります。

リバースプロキシがサービスを提供するコンテナーには、設定されたホスト名を使って HTTPS プロトコルでアクセスします (例: https://xp0cm.localhost

公開されている残りのコンテナーは、特定のポートを使用するようにあらかじめ設定されています (docker-compose.yml ファイルの ports を参照)。Docker Desktop for Windows のデフォルト設定では、これらのポートに localhost でアクセスします。

つまり、Sitecore Experience Platform - Single (XP0) のコンテナーには次のようにアクセスできます。

SQL Server への接続について

ポートを使って SQL Server に接続する場合は、構文が若干異なります。前述のように、コロン ":" の代わりにコンマ "," を使用する必要があります。sa アカウントと .env ファイルで SQL_SA_PASSWORD に指定した値 (init.ps1 ファイルではデフォルトで Password12345) を使用して、SQL Server 認証で接続できます。

サーバーへの接続ダイアログ。

Sitecore コンテナー環境には、起動時に実行される solr-init コンテナーが含まれており、Solr コンテナーに必要なコアを作成して(まだ存在していない場合)、終了します。これが期待される動作です。

ただし、このコンテナーはSolrが管理するスキーマを投入したり、インデックスを再構築したりすることはありません。これは、手動またはカスタムスクリプトで行う必要があります。この作業を行わないと、コンテナーのログに Solr 関連のエラーが表示されることがあります。

管理されたスキーマを生成し、インデックスを更新するには:

  1. Sitecore に admin でログインします。

  2. [コントロール パネル] を開き、すべての検索インデックスに管理スキーマを生成します。

  3. そのまま [コントロール パネル] で、検索インデックスの再構築を行います。

インスタンスを確認するには:

  1. https://xp0cm.localhost を参照すると、Sitecore のデフォルトの Web サイトが表示されます。

  2. https://xp0cm.localhost/sitecore にアクセスし、Sitecore にログインできることを確認します。"ユーザー名" には "admin" を、"パスワード" には .env ファイルでSITECORE_ADMIN_PASSWORD に指定した値(Password12345init.ps1 ファイルのデフォルト) を使用します。

  3. 次のコマンドでログを調べて、すべてのコンテナーからのログを確認します。

    docker-compose logs -f --tail 20

    -f (または --follow) オプションは、Docker に出力のストリーム化を指示し、--tail オプションは、最初のログ出力を各コンテナーの最後の20行に制限しています。ログの前にコンテナーのプレフィックスがついているのがわかります。

  4. 終わったら「Ctrl+C」と入力すると、プロンプトに戻ります。

Sitecore インスタンスを停止する。

  • 次のコマンドを実行します。

    docker-compose stop

    これによりコンテナーは停止しますが、削除はされません。その後、docker-compose start のコマンドで再度開始できます。

  • コンテナーを停止して削除するには:

    docker-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 スクリプトを使用することができます。

ファイルを削除するには:

  1. getting-started フォルダー で PowerShell 管理者プロンプトを開きます。

  2. 次のコマンドを実行します。

    .\clean.ps1