実行中のコンテナへのファイル展開

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

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

このトピックでは、Visual Studioからローカルで実行するコンテナに直接ファイルをデプロイできるように、Sitecoreソリューションをどのように構成するかを説明します。開発中にこの方法を使って効率的なフィードバックループを確保し、毎回カスタムSitecore画像を作り直すのではなく、

以下の図は展開プロセスの概要です:

A diagram that shows the deployment process.

Docker Examplesリポジトリをクローンする

まだ行っていなければ、Docker Exampleリポジトリ をマシン上の場所(例えばC:\sitecore\docker-examples\)にクローンしてください。本トピックでは、custom-imagesフォルダを例として使います。

例の準備

カスタムイメージの例は実行前に準備が必要です。まだ準備をしていない場合は、準備手順に従うか、付属のinit.ps1スクリプトを実行して自動的にこれらの準備手順を実行してください。

  • PowerShell管理者プロンプトを開き、custom-imagesフォルダ(例: C:\sitecore\docker-examples\custom-images)に移動します。 -LicenseXmlPathパラメータでSitecoreライセンスファイルの場所を指定する次のコマンドを実行します。

    .\init.ps1 -LicenseXmlPath C:\License\license.xml

開発用ENTRYPOINTスクリプトとは何ですか?

ENTRYPOINTはコンテナが最初に実行されたときに実行するコマンドを提供します。すべてのSitecoreランタイムイメージにはDockerfile命令の一部としてデフォルト設定ENTRYPOINTが設定されているため、画像は実行の準備ができています。docker inspectコマンドで任意の画像のデフォルトENTRYPOINTを見つけられます。

なぜ開発用のスクリプトが違うのか?

典型的なSitecoreの開発ワークフローには、複数回の反復でコード変更を行い、実行中のSitecoreインスタンスのウェブルートに対してソリューションを構築することが含まれます。現在のDocker for Windowsの制限により、コンテナ内のボリュームの宛先は存在しない、または空のディレクトリでなければなりません。マウントされたボリュームを持つDockerコンテナでは現時点では実現できません。

回避策としては、別のマウントされた ホット フォルダで変更を監視し、それらの変更をSitecoreウェブルートにコピーすることです。このウォッチ処理が起動時に開始されるようにするために、デフォルトのSitecore本ENTRYPOINTを上書きできます。

このウォッチプロセスと補助的なENTRYPOINTの組み合わせが 、sitecore-docker-tools-assetsイメージに含まれるものです。

sitecore-docker-tools-assetsイメージ開発ENTRYPOINT

画像構築プロセスを助ける他のスクリプトに加え、sitecore-docker-tools-assetsイメージには以下のスクリプトが含まれています:

  • 脚本をご覧ください:

    C:\tools\scripts\Watch-Directory.ps1: はソースパスのファイル変更を監視し、それに応じて宛先パスを更新します。

  • ENTRYPOINTスクリプト:

    • C:\tools\entrypoints\iis\Development.ps1IISベースの役割(例:CMCDxconnect)で使用するための開発ENTRYPOINTスクリプトです。
    • C:\tools\entrypoints\worker\Development.ps1:.NETコアベースのワーカーロール(例:xdbsearchworkerxdbautomationworkercortexprocessingworker)で使用する開発ENTRYPOINTスクリプトです。

Development.ps1の各スクリプトは同じように動作します:

  • ディレクトリがC:\deployにマウントされている場合、ウォッチプロセス(Watch-Directory.ps1)をバックグラウンドジョブとして開始します。
  • 彼らはデフォルトSitecore ENTRYPOINTと呼びます。

!注C:\deployはデフォルトのソースディレクトリですが、これを上書きすることもできます。ウォッチスクリプトのパラメータをカスタマイズして、異なるソースパスと宛先パスを使い、追加のファイルやフォルダを除外することも可能です。

解の構造を理解する

Dockerを用いたSitecore開発では、典型的なソリューションに新しいフォルダ「 docker folder」が導入されます。 dockerフォルダにはDocker開発をサポートするファイルやフォルダが含まれています。

custom-images\dockerフォルダの構造は以下の通りです:

deploy environment ...

environmentフォルダーそれぞれの役割は以下の通りです:

  • コード展開の 目的地
  • 脚本の開発ENTRYPOINT情報源です。

この場合、ウェブサイト フォルダはSitecoreのウェブサイト/プラットフォームコンテナ(cmcdなど)を担当し、xconnectフォルダはSitecoreのxConnectコンテナ( xconnectなど)を担当します。

Docker Examples環境プロジェクト

Docker Examplesリポジトリには、ファイル展開シナリオを示す2つのプロジェクトがあります。 custom-imagesフォルダにアクセスし、Visual StudioのソリューションDockerExamples.slnを開きます:

  • DockerExamples.Website
    、デフォルトの Sample Inner Sublayout.ascx サブレイアウトへの簡単な変更を含みます。
  • DockerExamples.XConnect
    アーティファクトのビルドと公開を促進します。

Helixソリューションでは、DockerExamples.WebsiteDockerExamples.XConnectのプロジェクトは、しばしば別々の環境モジュールと1つ以上のプロジェクト/機能モジュールに分割されますが、ここではシンプルさを図るためにまとめています。

これらのプロジェクトそれぞれにはDockerDeployの公開プロファイルがあります:

How to select a profile in a Visual Studio solution.

各プロファイルのDockerDeploy.pubxmlファイルを開くと、対応するdocker\deploy環境サブフォルダに公開するように設定されているのがわかります: DockerExamples.Website to docker\deploy\websiteDockerExamples.XConnect to docker\deploy\xconnect

ファイル展開オプション

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

しかし最終的な目的は同じで、ファイルを適切なdocker\deploy environmentサブフォルダに移動させることです。

これは、Sitecoreの開発ベストプラクティスであるウェブルートへのデプロイに似ていますが、ファイルを直接ウェブルートに送るのではなくdocker\deployに送る方法です。

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

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

  1. CMサービスのSitecoreランタイムDockerfileを開きます。最初にTOOLING_IMAGEがARG(Docker Composeで設定済み)で導入され、名前付きビルドステージとして開始されるのがわかりますtooling:

    ARG TOOLING_IMAGE ... FROM ${TOOLING_IMAGE} as tooling

    toolsフォルダ(ENTRYPOINTスクリプトを含む)はtooling画像からコピーされてC:\tools:

    COPY --from=tooling \tools\ \tools\

  2. xconnectサービスのSitecoreランタイムDockerfileを開くと、同じ手順がこちらに示されています。これらはXP1トポロジーやXM1トポロジーで使えるように、cd SitecoreランタイムDockerfileにも含まれています。

これがSitecoreのランタイムDockerfileに必要なすべてです。

!重要ENTRYPOINTスクリプトとウォッチスクリプトがイメージにコピーされ、実行時に利用可能であることが重要です。

Docker Composeで設定するには:

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

    以下の例はcmサービスの構成方法を示しています:

    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"

    以下は構成の説明です。

    • TOOLING_IMAGEビルドARGはsitecore-docker-tools-assetsイメージリポジトリを使用するように設定されています。特定のイメージタグやバージョンは、環境ファイル(.env)で定義されているTOOLS_VERSION変数によって決まります。
    • また、.envファイルでは、LOCAL_DEPLOY_PATHがdocker\deployフォルダの相対パスに設定されています。
    • この変数は、docker\deploy website environmentサブフォルダ(.\docker\deploy\website)を、デフォルトのwatch scriptソースフォルダ(C:\deploy)の実行中のコンテナにDockerボリュームで公開するために使われます。
    • デフォルトの エントリーポイント は上書きされ、開発 ENTRYPOINT スクリプトに設定されます。
  2. xconnectサービスも同様の構成で設定されています。ただし、C:\deployボリュームマウントはdocker\deploy xconnect environmentサブフォルダにマッピングされます。

    xconnect: ... volumes:

    • ${LOCAL_DEPLOY_PATH}\xconnect:C:\deploy ...

    このセットアップが完了すると、実行中のSitecore Dockerインスタンス内のウェブサイト/プラットフォームまたはxConnectコンテナにソリューション資産を独立して公開できます。

Docker Examplesを実行する

Dockerの例を実行するには:

  1. PowerShellプロンプトを開き、custom-imagesフォルダに移動し、Docker Compose upコマンドでDocker例を実行します:

    docker-compose up -d

  2. インスタンスが稼働したら、https://cm.dockerexamples.localhostにブラウズしてください。お馴染みのSitecoreデフォルトページにDockerロゴが追加されました:

    The standard Sitecore first page.

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

  3. Visual StudioでSample Inner Sublayout.ascxファイルを開いて変更を加えてください。例えば、Dockerロゴの下に新しい段落を追加するといった例があります。

    <%@ Control Language="c#" AutoEventWireup="true" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>

  4. DockerExamplesを公開します*。DockerDeployの公開プロファイルを使用したウェブサイトプロジェクト(DockerExamplesを右クリックしてください。)。Solution Explorerのウェブサイト*プロジェクトを使い、「公開」をクリックします。

    !注これにより、docker\deploy websiteフォルダにファイルを公開されます。これにより、cmコンテナの ウェブルートにコピーするウォッチスクリプトがトリガーされます。

  5. 公開が完了したら、ブラウザでhttps://cm.dockerexamples.localhostページを更新すると、変更点を確認できます。

    The Sitecore home page showing the change you made.
  6. downコマンドを使ってコンテナを停止し、取り外します:

    docker-compose down

デプロイフォルダを整理してください

mssqlsolrのデータフォルダと同様に、dockerやデプロイフォルダのファイルは1docker-compose down後も残ります。これらのフォルダ内のファイルを削除するには、付属のclean.ps1スクリプトを使ってください。

デプロイフォルダの整理:

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

    .\docker\clean.ps1

この記事を改善するための提案がある場合は、 お知らせください!