実行中のコンテナーへのファイルのデプロイ

Version: 10.2
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

このトピックでは、Visual Studio からローカルで実行されているコンテナーにファイルを直接デプロイできるように、Sitecore ソリューションを設定する方法について説明します。カスタムの Sitecore イメージを毎回再構築するのではなく、開発中にこれを使用して効率的なフィードバック ループを確実にします。

次の図は、デプロイ プロセスの概要を示したものです。

A diagram that shows the deployment process.

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 CDxconnect など) に使用する開発用の ENTRYPOINT スクリプト。

    • C:\tools\entrypoints\worker\Development.ps1: .NET Core ベースのワーカー ロール (xdbsearchworkerxdbautomationworkercortexprocessingworker など) で使用する開発用の ENTRYPOINT スクリプト。

Development.ps1 の各スクリプトの動作は同じであり、次のとおりです。

  • ディレクトリが C:\deploy にマウントされている場合、バックグラウンド ジョブとして監視プロセス (Watch-Directory.ps1) を開始します。

  • デフォルトの Sitecore ENTRYPOINT を呼び出します。

注記

C:\deploy はデフォルトのソース ディレクトリですが、必要に応じて上書きできます。watch スクリプトのパラメーターをカスタマイズして、異なるソース パスとデスティネーション パスを使用したり、追加のファイルやフォルダーを除外したりすることができます。

ソリューションの構造の理解

Docker を使った Sitecore 開発では、代表的なソリューションに docker フォルダーという新しいフォルダーが導入されています。docker フォルダーには、Docker 開発をサポートするためのファイルやフォルダーが含まれています。

custom-images\docker フォルダーの構造は次のとおりです。

RequestResponse
deploy
    [environment]
    [...]

[environment] フォルダーは、それぞれ次のように機能します。

  • コードのデプロイ先

  • 開発用の ENTRYPOINT watch スクリプトのソース

この場合、website フォルダーは Sitecore の Web サイト/プラットフォーム コンテナー (cmcd など) を提供し、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 パブリッシュ プロファイルがあります。

How to select a profile in a Visual Studio solution.

各プロファイルの DockerDeploy.pubxml ファイルを開くと、各プロファイルが対応する docker\deploy 環境サブフォルダーにパブリッシュされるように設定されていることがわかります。DockerExamples.Websitedocker\deploy\website にパブリッシュされ、DockerExamples.XConnectdocker\deploy\xconnect にパブリッシュされます。

ファイルのデプロイ オプション

Docker Examples ソリューションは、基本的な Visual Studio のファイル パブリッシュを使用したシンプルな例です。実際のソリューションでは、Team Development for Sitecore (TDS) や Helix Publishing Pipeline (HPP) に含まれているメカニズムや、独自のカスタム アプローチなど、より堅牢なデプロイ メカニズムを使用できます。

ただし、最終目標は同じです。ファイルを適切な docker\deploy 環境サブフォルダーに配置することです。

これは、Web ルートにデプロイする、Sitecore 開発のベスト プラクティスに従うことに似ています。ただし、ファイルを Web ルートに直接送信する代わりに、docker\deploy に送信します。

Sitecore ランタイム イメージへの適用

Sitecore イメージでランタイムのファイル デプロイを有効にするには:

  1. cm サービスの Sitecore ランタイム Dockerfile を開きます。TOOLING_IMAGE は、最初に ARG (Docker Compose で設定) によって取り込まれ、次に名前付きのビルド ステージ tooling として起動されているのがわかります。

    RequestResponse
    ARG TOOLING_IMAGE
    [...]
    FROM ${TOOLING_IMAGE} as tooling

    tools フォルダー (ENTRYPOINT スクリプトを含む) が tooling イメージから(C:\tools に) コピーされています。

    RequestResponse
    COPY --from=tooling \tools\ \tools\
  2. xconnect サービスの Sitecore ランタイム Dockerfile を開くと、同じ命令が表示されます。これらは、XP1 トポロジと XM1 トポロジ用の cd Sitecore ランタイム Dockerfile にも含まれています。

Sitecore ランタイム Dockerfile に必要なのはこれだけです。

重要

ENTRYPOINT スクリプトと watch スクリプトはイメージにコピーされているため、実行時に使用できることが重要です。

Docker Compose で設定するには:

  1. custom-images フォルダーのルートにある docker-compose.override.yml ファイル (例: C:\sitecore\docker-examples\custom-images\docker-compose.override.yml) を開きます。

    以下に、cm サービスの設定方法の例を示します。

    RequestResponse
    cm:
      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_PATHdocker\deploy フォルダーの相対パスに設定されています。

    • この変数は、docker\deploywebsite 環境サブフォルダー (.\docker\deploy\website) を Docker ボリュームのデフォルトの watch スクリプトのソース フォルダー (C:\deploy) で実行されているコンテナーに公開するために使用されます。

    • デフォルトのエントリポイントはオーバーライドされ、開発の ENTRYPOINT スクリプトに設定されます。

  2. xconnect サービスも同様に設定します。ただし、C:\deploy ボリュームのマウントは、docker\deployxconnect 環境サブフォルダーにマッピングします。

    RequestResponse
    xconnect:
      [...]
      volumes:
        - ${LOCAL_DEPLOY_PATH}\xconnect:C:\deploy
      [...]

    この設定が完了したら、実行中の Sitecore Docker インスタンスの Web サイト/プラットフォームまたは xConnect のコンテナーにソリューションのアセットを個別にパブリッシュできます。

Docker Examples の実行

Docker Examples を実行するには:

  1. PowerShell プロンプトを開き、custom-images フォルダーに移動します。Docker Compose の up コマンドを使用して Docker Examples を実行します。

    RequestResponse
    docker-compose up -d
  2. インスタンスが起動および実行されたら、https://cm.dockerexamples.localhost にアクセスします。これまでの Sitecore のデフォルトのページに、Docker のロゴが追加されています。

    The standard Sitecore first page.

    このロゴは、DockerExamples.Website プロジェクトの Sample Inner Sublayout.ascx サブレイアウトで追加されています。

  3. 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>
  4. DockerDeploy パブリッシュ プロファイルを使用して、DockerExamples.Website プロジェクトをパブリッシュします (ソリューション エクスプローラーDockerExamples.Website プロジェクトを右クリックして、[パブリッシュ] をクリックします)。

    注記

    これにより、ファイルが docker\deploywebsite フォルダーにパブリッシュされます。それにより、watch スクリプトがトリガーされ、ファイルが cm コンテナーの Web ルートにコピーされます。

  5. パブリッシュが完了したら、ブラウザーで https://cm.dockerexamples.localhost ページを更新して、変更を確認できます。

    The Sitecore home page showing the change you made.
  6. down コマンドを使用して、コンテナーを停止および削除します。

    RequestResponse
    docker-compose down

デプロイ フォルダーのクリーンアップ

mssqlsolr のデータ フォルダーと同様に、docker/deploy フォルダーには docker-compose down コマンドの後にファイルが残ります。これらのフォルダー内のファイルを削除するには、含まれている clean.ps1 スクリプトを使用します。

デプロイ フォルダーをクリーンアップするには、次の手順に従います。

  • custom-images フォルダーに移動し、PowerShell 管理者プロンプトで次のスクリプトを実行します。

    RequestResponse
    .\docker\clean.ps1

何かフィードバックはありますか?

この記事を改善するための提案がある場合は、