アイテムのデプロイ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、DockerでのSitecoreアイテム パッケージとデプロイ自動化戦略について説明します。これを行うには、使用するアイテムのシリアル化ツールに応じて、さまざまな方法があります。
Sitecore CLIとSitecoreコンテンツのシリアル化
Sitecore CLIとSitecoreコンテンツのシリアル化
Sitecore CLIは、リモートSitecoreインスタンスとのスクリプト化されたインタラクション用に最適化されています。これは、継続的インテグレーション プロセス中にアイテムをパッケージ化したり、デプロイと配信のプロセス中にそれらのパッケージをインストールしたりするために使用できます。Sitecore CLIを使用したSitecore環境へのアイテムのデプロイの自動化は、コンテナを使用する場合も同じです。
Sitecore CLIドキュメントには詳細が記載されており、Sitecoreモジュール リファレンスには、CMコンテナー イメージに必要なSitecore Management Servicesモジュールのインストールに関する情報が記載されています。
Sitecore TDS
Sitecore TDS
Sitecore TDSには、アイテムのパッケージ化とデプロイを容易にする組み込みツールが多数あります。一般的なアプローチは、これらのツールを使用してソリューションのビルド中にアイテム パッケージを作成し、Sitecoreランタイム イメージのビルド時にContent Management (CM) イメージに追加することです。
Helixです。GitHubの例リポジトリには、完全な例があります。
Sitecore TDSプロジェクト構成
この例では、ビルド出力 とWebDeployパッケージという2つのSitecore TDS機能を利用します。これらは、TDSプロジェクトのプロパティ ページで構成される設定です。
-
ビルド出力パス - Buildページにあり、Releaseビルド構成に対して設定します。すべてのTDSプロジェクトで共有されるパスを指定します。この例では、これは ..\..\TdsGeneratedPackages\Release\に設定されています。
-
WebDeploy パッケージのビルド- WebDeploy Packageページにあり、Releaseビルド構成にこれを選択します。Package Nameを指定し、Code and Item Packaging OptionsにItem only Packageを選択します。
以下は、TDSプロジェクトを適切に構成していることを前提としています。
ソリューションビルドで構成する
Sitecore TDS Dockerビルドまたはクラウド ビルドの環境変数のライセンスが必要です。
-
ソリューション ビルドDockerfileステージでは、コードのコンパイルとビルド ステージ (例ではbuilder) の開始時に、これらのARGを宣言します。
Dockerfile内の場所は、ARG範囲のために重要です。代わりに、前のビルド ステージでこれらを宣言すると、builderステージで使用したときに値は空になります。また、ENVの代わりにARGが使用されているのは、イメージのビルドにのみ使用されるためであることに注意してください。
これらの値は、docker-compose.override.ymlファイル内のsolutionサービスに対して設定されます。たとえば、次のようになります。
環境ファイル (.env) にTDS_OWNER値とTDS_KEY値を含めることができますが、通常は、ローカル開発マシンではシステム環境変数として、ビルド サーバーではシークレットとして指定します (セキュリティ上の理由から)。
-
ソリューション ビルドDockerfileシステムでは、msbuild命令を簡略化し、代わりにTDSプロジェクトで構成されたビルド出力に頼ることができます。
ビルド出力は、builderのWORKDIRを基準にして、TDSプロジェクト (Build Output Path) で指定された場所に配置されます。この例では、ビルド出力は次のようになります。
-
\build\TdsGeneratedPackages\Release (ファイル)
-
\build\TdsGeneratedPackages\WebDeploy_Release (WDPアイテムパッケージ)
これらをbuilderステージから最終イメージに次の構造でコピーします。
-
\artifacts\website
-
\artifacts\packages
-
\artifacts\transforms
-
-
最終的な指示を次のように調整できます。
Sitecore CMランタイム イメージに追加
solutionイメージにアイテムをパッケージ化して含めた場合、Sitecoreランタイムイメージをビルドするときに、アイテムをContent Management (CM)イメージに追加できます。
cmサービスのDockerfileの最後に、アイテム パッケージをデプロイする手順を追加します。TDSには、これを処理するための2つのオプションがあります。
-
オプション1: コンテナーの作成時にデプロイする
これにより、Sitecore TDSサイトの起動時にアイテムパッケージをインストールできます。 TDSの組み込み機能を使用します。ただし、これは、このイメージを使用してコンテナが作成されるたびに発生することに注意する必要があります。
-
オプション2: オンデマンドでデプロイする
toolingイメージのDeploy-TdsWdpPackages.ps1スクリプトを使用します。パッケージと一緒にコピーします。
その後、次のスクリプトを使用して、コンテナのDeploy-TdsWdpPackages.ps1をオンデマンドで呼び出すことができます。
ユニコーン
ユニコーン
Unicornはサードパーティのオープンソース ツールであり、Sitecoreサポートではサポートされていません。これらの手順は、Unicornユーザーの便宜のために、ガイダンスとしてのみ提供されています。
ここで説明する他のシリアル化ツールとは異なり、Unicornにはパッケージ化機能が組み込まれておらず、Sitecoreプラットフォームとインプロセスで実行されます。したがって、Unicorn設定のシリアル化されたアイテムは、同期するContent Managementインスタンスのファイルシステムに存在する必要があります。Dockerを使用すると、コンテナのビルド中にアイテムをコピーできるため、これは簡単です。Unicornは、アイテムの同期をトリガーするPowerShellモジュール も提供しています。これは、コンテナを使用するときにアイテムのデプロイを自動化するのに便利です。
次の手順では、すでにDockerを使用してソリューションを構築し、カスタムSitecoreイメージを作成していることを前提としています。 Helixを参照してください。完全な例については、GitHubのExamplesリポジトリ を参照してください。
シリアル化された項目をソリューション成果物に追加する
Unicornを使用する場合、通常、シリアル化された項目をSitecoreソリューション ソース内に配置し、Unicorn構成によって定義された構造に整理します。これは、Sitecore Helixプラクティスに従う可能性があります。これらのシリアル化された項目はすべて、ソリューションのビルド中にコピーできますが、ディレクトリ構造を保持することが重要です。Robocopyは、これを実現するための簡単なオプションの1つです。
アイテムとデプロイ スクリプトをCMイメージにビルドする
ソリューション イメージにビルド成果物として項目があるので、以前にmsbuild出力で行ったのと同じように、それらをCMイメージにコピーします。さらに、Unicorn Remotingに必要なファイルをCMイメージに配置して、後でCMコンテナからスクリプト同期を実行できるようにします。
-
CMビルドコンテキストのunicornフォルダには、Unicornリモートスクリプティングに必要なファイルが含まれている必要があります。
-
MicroCHAP.dll
-
Unicorn.psm1
-
カスタム sync.ps1
-
-
この場合のsync.ps1スクリプトには、標準のSync-Unicorn呼び出しが含まれ、環境変数を使用してUnicorn共有シークレットを設定する必要があります。
-
CM Dockerfileで、このフォルダとシリアル化されたアイテムアーティファクトをコピーし、後でUnicornの構成に使用できる環境変数を設定します。
UnicornとDocker環境を構成する
Unicorn syncに使用される基本ファイルシステムパスは、通常、sourceFolderというsc.variableを使用してSitecore構成で設定されます。
-
この値を、上記で定義した環境変数からDockerfileに入力します。
-
Unicorn共有シークレットも環境変数から入力すると、以前にsync.ps1で行ったのと同じ環境変数を使用できます。
-
この環境変数をdocker-compose.override.ymlと .envで定義します。
同期を実行する
この時点で、Unicornとのアイテム同期をトリガーするために必要なものはすべて揃っています。
-
CMコンテナのファイルシステム上のシリアル化された項目
-
このパスをアイテムソースとして使用するように設定されたユニコーン
-
環境変数を介して設定されたユニコーン共有シークレット
-
同期をトリガーするPowerShellスクリプト
アイテムをデプロイする場合は、手動または配信パイプライン内で、docker execを使用するか、運用コンテナオーケストレーター内で同等のものを使用します。