実行中のコンテナーへのファイルのデプロイ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、Visual Studio からローカルで実行されているコンテナーにファイルを直接デプロイできるように、Sitecore ソリューションを設定する方法について説明します。カスタムの Sitecore イメージを毎回再構築するのではなく、開発中にこれを使用して効率的なフィードバック ループを確実にします。
次の図は、デプロイ プロセスの概要を示したものです。
Docker Examples リポジトリのクローンの作成
Docker Examples リポジトリのクローンをコンピューター上のどこか (C:\sitecore\docker-examples\
など) に作成します (まだ作成していない場合)。このトピックでは、custom-images フォルダーを例として使用しています。
サンプルの準備
custom-images の例では、実行する前にいくつかの準備が必要です。まだ準備をしていない場合は、準備の手順に従うか、付属の compose-init.ps1
スクリプトを実行して、これらの準備手順を自動的に実行してください。
-
PowerShell 管理者プロンプトを開き、custom-images フォルダー (
C:\sitecore\docker-examples\custom-images
など) に移動します。次のコマンドを実行し、-LicenseXmlPath
を Sitecore ライセンス ファイルの場所に置き換えます。RequestResponse.\compose-init.ps1 -LicenseXmlPath C:\License\license.xml
開発 ENTRYPOINT スクリプトとは?
ENTRYPOINT
は、コンテナーが最初に実行されるときに実行するコマンドを提供します。すべての Sitecore ランタイム イメージには、Dockerfile 命令の一部としてデフォルトの ENTRYPOINT
が設定されており、イメージはすぐに実行できる状態になっています。イメージのデフォルトの ENTRYPOINT
は、docker inspect
コマンドで確認できます。
なぜ開発用に別のイメージを使うのか?
代表的な Sitecore 開発ワークフローには、複数回の反復によるコード変更、および実行中の Sitecore インスタンスの Web ルートへのソリューションの構築が含まれます。現在の Docker for Windows の制限が理由で、コンテナー内のボリュームの宛先は、存在しないディレクトリまたは空のディレクトリである必要があります。現在、ボリュームがマウントされている Docker コンテナーでは実行できません。
回避策は、マウントされた別のホット フォルダーを監視し、これらの変更を Sitecore Web ルートにコピーすることです。この監視プロセスが起動時に開始されるようにするために、デフォルトの Sitecore 本番の ENTRYPOINT
をオーバーライドできます。
この監視プロセスと付随する ENTRYPOINT
の組み合わせが、sitecore-docker-tools-assets イメージに含まれています。
sitecore-docker-tools-assets イメージの開発 ENTRYPOINT
イメージ ビルド プロセスで役立つ他のスクリプトに加えて、sitecore-docker-tools-assets イメージには以下のスクリプトが含まれています。
-
watch スクリプト
C:\tools\scripts\Watch-Directory.ps1
: ソース パスでのファイルの変更を監視し、変更に応じてに宛先パスを更新します。 -
ENTRYPOINT スクリプト
-
C:\tools\entrypoints\iis\Development.ps1
: IIS ベースのロール ( CM、 CD、xconnect など) に使用する開発用のENTRYPOINT
スクリプト。 -
C:\tools\entrypoints\worker\Development.ps1
: .NET Core ベースのワーカー ロール (xdbsearchworker、xdbautomationworker、cortexprocessingworker など) で使用する開発用のENTRYPOINT
スクリプト。
-
Development.ps1 の各スクリプトの動作は同じであり、次のとおりです。
-
ディレクトリが
C:\deploy
にマウントされている場合、バックグラウンド ジョブとして監視プロセス (Watch-Directory.ps1
) を開始します。 -
デフォルトの Sitecore
ENTRYPOINT
を呼び出します。
C:\deploy
はデフォルトのソース ディレクトリですが、必要に応じて上書きできます。watch スクリプトのパラメーターをカスタマイズして、異なるソース パスとデスティネーション パスを使用したり、追加のファイルやフォルダーを除外したりすることができます。
ソリューションの構造の理解
Docker を使った Sitecore 開発では、代表的なソリューションに docker フォルダーという新しいフォルダーが導入されています。docker フォルダーには、Docker 開発をサポートするためのファイルやフォルダーが含まれています。
custom-images\docker フォルダーの構造は次のとおりです。
deploy
[environment]
[...]
[environment]
フォルダーは、それぞれ次のように機能します。
-
コードのデプロイ先。
-
開発用の
ENTRYPOINT
watch スクリプトのソース。
この場合、website フォルダーは Sitecore の Web サイト/プラットフォーム コンテナー (cm、cd など) を提供し、xconnect フォルダーは Sitecore xConnect コンテナー (xconnect など) を提供します。
Docker Examples 環境のプロジェクト
Docker Examples リポジトリには、ファイル デプロイのシナリオのデモに役立つ 2 つのプロジェクトが含まれています。custom-images フォルダーに移動し、Visual Studio でソリューション DockerExamples.sln を開きます。
-
DockerExamples.Website: Web サイト/プラットフォーム アーティファクトの構築とパブリッシュを容易にします。デフォルトの
Sample Inner Sublayout.ascx
サブレイアウトの簡単な修正も含まれています。 -
DockerExamples.XConnect: xConnect アーティファクトのビルドとパブリッシュを容易にします。
Helix ソリューションでは、DockerExamples.Website プロジェクトと DockerExamples.XConnect プロジェクトが、通常、個別の環境モジュールと 1 つ以上のプロジェクト/機能モジュールに分割されます。ここでは、これらをまとめてシンプルにしています。
これらの各プロジェクトに、DockerDeploy パブリッシュ プロファイルがあります。
各プロファイルの DockerDeploy.pubxml
ファイルを開くと、各プロファイルが対応する docker\deploy 環境サブフォルダーにパブリッシュされるように設定されていることがわかります。DockerExamples.Website は docker\deploy\website にパブリッシュされ、DockerExamples.XConnect は docker\deploy\xconnect にパブリッシュされます。
ファイルのデプロイ オプション
Docker Examples ソリューションは、基本的な Visual Studio のファイル パブリッシュを使用したシンプルな例です。実際のソリューションでは、Team Development for Sitecore (TDS) や Helix Publishing Pipeline (HPP) に含まれているメカニズムや、独自のカスタム アプローチなど、より堅牢なデプロイ メカニズムを使用できます。
ただし、最終目標は同じです。ファイルを適切な docker\deploy 環境サブフォルダーに配置することです。
これは、Web ルートにデプロイする、Sitecore 開発のベスト プラクティスに従うことに似ています。ただし、ファイルを Web ルートに直接送信する代わりに、docker\deploy に送信します。
Sitecore ランタイム イメージへの適用
Sitecore イメージでランタイムのファイル デプロイを有効にするには:
-
cm サービスの Sitecore ランタイム Dockerfile を開きます。
TOOLING_IMAGE
は、最初にARG
(Docker Compose で設定) によって取り込まれ、次に名前付きのビルド ステージtooling
として起動されているのがわかります。RequestResponseARG TOOLING_IMAGE [...] FROM ${TOOLING_IMAGE} as tooling
tools
フォルダー (ENTRYPOINT
スクリプトを含む) がtooling
イメージから(C:\tools
に) コピーされています。RequestResponseCOPY --from=tooling \tools\ \tools\
-
xconnect サービスの Sitecore ランタイム Dockerfile を開くと、同じ命令が表示されます。これらは、XP1 トポロジと XM1 トポロジ用の cd Sitecore ランタイム Dockerfile にも含まれています。
Sitecore ランタイム Dockerfile に必要なのはこれだけです。
ENTRYPOINT
スクリプトと watch スクリプトはイメージにコピーされているため、実行時に使用できることが重要です。
Docker Compose で設定するには:
-
custom-images フォルダーのルートにある
docker-compose.override.yml
ファイル (例:C:\sitecore\docker-examples\custom-images\docker-compose.override.yml
) を開きます。以下に、
cm
サービスの設定方法の例を示します。RequestResponsecm: image: ${REGISTRY}${COMPOSE_PROJECT_NAME}-xp0-cm:${VERSION:-latest} build: context: ./docker/build/cm args: BASE_IMAGE: ${SITECORE_DOCKER_REGISTRY}sitecore-xp0-cm:${SITECORE_VERSION} SPE_IMAGE: ${SITECORE_MODULE_REGISTRY}spe-assets:${SPE_VERSION} SXA_IMAGE: ${SITECORE_MODULE_REGISTRY}sxa-xp1-assets:${SXA_VERSION} TOOLING_IMAGE: ${SITECORE_TOOLS_REGISTRY}sitecore-docker-tools-assets:${TOOLS_VERSION} SOLUTION_IMAGE: ${REGISTRY}${COMPOSE_PROJECT_NAME}-solution:${VERSION:-latest} [...] volumes: - ${LOCAL_DEPLOY_PATH}\website:C:\deploy [...] entrypoint: powershell -Command "& C:\tools\entrypoints\iis\Development.ps1"
この設定の説明を以下に示します。
-
build の
TOOLING_IMAGE
引数は、sitecore-docker-tools-assets
イメージ リポジトリを使用するように設定されています。特定のイメージのタグまたはバージョンは、環境ファイル (.env
) で定義されているTOOLS_VERSION
変数によって決まります。 -
また、
.env
ファイルでは、LOCAL_DEPLOY_PATH
が docker\deploy フォルダーの相対パスに設定されています。 -
この変数は、docker\deploy の
website
環境サブフォルダー (.\docker\deploy\website
) を Docker ボリュームのデフォルトの watch スクリプトのソース フォルダー (C:\deploy
) で実行されているコンテナーに公開するために使用されます。 -
デフォルトのエントリポイントはオーバーライドされ、開発の
ENTRYPOINT
スクリプトに設定されます。
-
-
xconnect
サービスも同様に設定します。ただし、C:\deploy
ボリュームのマウントは、docker\deploy のxconnect
環境サブフォルダーにマッピングします。RequestResponsexconnect: [...] volumes: - ${LOCAL_DEPLOY_PATH}\xconnect:C:\deploy [...]
この設定が完了したら、実行中の Sitecore Docker インスタンスの Web サイト/プラットフォームまたは xConnect のコンテナーにソリューションのアセットを個別にパブリッシュできます。
Docker Examples の実行
Docker Examples を実行するには:
-
PowerShell プロンプトを開き、custom-images フォルダーに移動します。Docker Compose の
up
コマンドを使用して Docker Examples を実行します。RequestResponsedocker-compose up -d
-
インスタンスが起動および実行されたら、https://cm.dockerexamples.localhost にアクセスします。これまでの Sitecore のデフォルトのページに、Docker のロゴが追加されています。
このロゴは、DockerExamples.Website プロジェクトの
Sample Inner Sublayout.ascx
サブレイアウトで追加されています。 -
Sample Inner Sublayout.ascx
ファイルを Visual Studio で開いて、変更を加えます。たとえば、次のように Docker のロゴの下に新しい段落を追加します。RequestResponse<%@ Control Language="c#" AutoEventWireup="true" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> <div id="InnerCenter"> <div id="Header"> <img src="-/media/Default Website/sc_logo.ashx" alt="Sitecore" id="scLogo" /> <p style="margin: 0 16px; font-size: 30px;">+</p> <img src="/images/docker-logo.png" alt="Docker" /> <p><strong>= Awesome!</strong></p> </div> <div id="Content"> <div id="LeftContent"> <sc:placeholder runat="server" key="content" /> </div> </div> <div id="Footer"><hr class="divider"/>© <%= Sitecore.DateUtil.ToServerTime(DateTime.UtcNow).Year.ToString()%> Sitecore</div> </div>
-
DockerDeploy パブリッシュ プロファイルを使用して、DockerExamples.Website プロジェクトをパブリッシュします (ソリューション エクスプローラーで DockerExamples.Website プロジェクトを右クリックして、[パブリッシュ] をクリックします)。
注記これにより、ファイルが docker\deploy の
website
フォルダーにパブリッシュされます。それにより、watch スクリプトがトリガーされ、ファイルが cm コンテナーの Web ルートにコピーされます。 -
パブリッシュが完了したら、ブラウザーで https://cm.dockerexamples.localhost ページを更新して、変更を確認できます。
-
down
コマンドを使用して、コンテナーを停止および削除します。RequestResponsedocker-compose down
デプロイ フォルダーのクリーンアップ
mssql や solr のデータ フォルダーと同様に、docker/deploy フォルダーには docker-compose down
コマンドの後にファイルが残ります。これらのフォルダー内のファイルを削除するには、含まれている clean.ps1
スクリプトを使用します。
デプロイ フォルダーをクリーンアップするには、次の手順に従います。
-
custom-images フォルダーに移動し、PowerShell 管理者プロンプトで次のスクリプトを実行します。
RequestResponse.\docker\clean.ps1