カスタムSitecoreイメージの作成

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

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

このトピックでは、ソリューションからのビルド出力を他のアセットと共にベースSitecoreランタイム イメージにレイヤー化して、独自のカスタムSitecoreイメージを作成する方法について説明します。

次の図は、カスタムSitecoreイメージの作成方法を示しています。

Sitecore images and repositories

このトピックでは、Docker Examplesソリューションを使用して、これを説明するためのカスタムSitecore Experience Platform - Single (XP0) イメージを構築します。

このガイドでは、ソリューションをビルドでき、ビルド成果物を含むDockerソリューション イメージを持っているか、従来の方法でビルド出力を使用できることを前提としています。

Docker Examplesリポジトリをマシン上の場所にまだクローンしていない場合は、クローンします。このガイドでは、custom-imagesフォルダーを使用します。

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

Dockerを使用したSitecore開発では、一般的なソリューションであるdockerフォルダーに新しいフォルダーが導入されます。 dockerフォルダには、Docker開発をサポートするためのファイルとフォルダが含まれています。このトピックでは、buildフォルダーに焦点を当てます。 custom-images\dockerフォルダに移動し、次の場所にあるbuildフォルダの内容を確認します。

RequestResponse
build
    [service]
        Dockerfile
    ...

service各フォルダ:

  • 特定のSitecoreトポロジを構成するコンテナーを表します。この例では、Sitecore Experience Platform - Single (XP0)、、solridcmxconnectなどmssql

  • 少なくともDockerfileが含まれています。これはSitecoreランタイムのDockerfileです。

  • Docker Composeファイル内の対応するサービスのDockerビルド コンテキストとして使用されます。

Docker Examplesリポジトリには、all Sitecoreトポロジのサービスをカバーするビルド フォルダーが含まれています。

SitecoreランタイムDockerfile

SitecoreランタイムDockerfileを使用して、カスタマイズしたバージョンのSitecoreランタイム イメージをビルドします。Sitecoreトポロジを構成するコンテナごとにDockerfileを作成することをお勧めします。

Sitecoreトポロジのロール (コンテナー) ごとにSitecoreランタイムDockerfileを作成します (この時点ではカスタマイズがない場合でも)。これは、次の理由で推奨されます。

  • ホットフィックスや将来のカスタマイズを行うための専用レイヤーがあります。

  • あなたはあなた自身の結果の画像を持っており、あなたはあなたのソリューションのニーズに応じて名前を付け、タグ付けし、ラベルを付け、保存することができます。

ソリューション ビルド出力を使用したDockerfile

Dockerfileでソリューション ビルド出力を使用する方法を確認するには、次のようにします。

  • cmサービスのDockerfileを開きます (例: C:\sitecore\docker-examples\custom-images\docker\build\cm\Dockerfile)。これは、ソリューション イメージのビルド成果物を使用する例です。

    • ビルドステージの初期化

      複数のビルドステージが初期化されます。

      RequestResponse
      ARG BASE_IMAGE
      ARG SXA_IMAGE
      ARG SPE_IMAGE
      ARG TOOLING_IMAGE
      ARG SOLUTION_IMAGE
      
      FROM ${SOLUTION_IMAGE} as solution
      FROM ${TOOLING_IMAGE} as tooling
      FROM ${SPE_IMAGE} as spe
      FROM ${SXA_IMAGE} as sxa
      FROM ${BASE_IMAGE}

      solutiontoolingspe、およびsxaイメージが取り込まれ、後で使用するために名前が付けられます(COPY指示付き)。最後の部分では、渡されたSitecore BASE_IMAGE (Docker Composeで設定) を使用してカスタム イメージを開始します。

    • 開発ツールを追加

      開発ツールは、toolingイメージから( C:\toolsに)コピーされます。 ローカル開発のためのENTRYPOINTを提供するだけでなく、これらは後で変換を適用するために使用されます。

      RequestResponse
      COPY --from=tooling \tools\ \tools\
    • 作業ディレクトリの設定

      これはIISイメージを使用するため、ほとんどのカスタマイズは のC:\inetpub\wwwroot内で行われるため、これは作業ディレクトリに設定されます。

      RequestResponse
      WORKDIR C:\inetpub\wwwroot
    • Sitecoreモジュールを追加する

      Sitecoreモジュールは、cmロールに必要な手順に従って追加されます。 詳細については、「Sitecoreモジュールの追加 」を参照してください。この例には、Sitecore PowerShell Extensions (SPE) とSitecore Experience Accelerator (SXA) が含まれています。

      RequestResponse
      COPY --from=spe \module\cm\content .\
      COPY --from=sxa \module\cm\content .\
      COPY --from=sxa \module\tools \module\tools
      RUN C:\module\tools\Initialize-Content.ps1 -TargetPath .\; `
          Remove-Item -Path C:\module -Recurse -Force;
      メモ

      ソリューションの指示の前にモジュールの指示を追加することをお勧めします。これは、キャッシュを最適化するために、最も頻繁に変更される手順から最も頻繁に変更される手順を順序付けるDockerfileのベスト プラクティスに従っています。

    • ファイルの追加

      次に、solutionビルドイメージのファイルがコピーされます。覚えていると思いますが、出力ファイルは \artifacts\websiteの例のソリューションイメージに保存されています。

      RequestResponse
      COPY --from=solution \artifacts\website\ .\
    • 変換を追加する

      cmサービスには、ソリューション変換ファイルとロール変換ファイルの両方の例があります。構成変換の適用には、詳細があります。

      まず、解変換が にコピーされ (出力変換は \artifacts\transforms\のサンプル解像に格納されます)、次にロール変換が行われます。

      RequestResponse
      COPY --from=solution \artifacts\transforms\ \transforms\solution\
      COPY .\transforms\ \transforms\role\
    • 変換を適用する

      最後に、ソリューションとロール変換がWebルートに適用されます。

      RequestResponse
      RUN C:\tools\scripts\Invoke-XdtTransform.ps1 -Path .\ -XdtPath C:\transforms\solution\DockerExamples.Website
      RUN C:\tools\scripts\Invoke-XdtTransform.ps1 -Path .\ -XdtPath C:\transforms\role
    • アイテムの追加

      Sitecoreアイテムのシリアル化フレームワークと戦略によっては、cm Dockerfileにこれらを説明するための追加の指示がここにある場合があります。詳細については 、項目のデプロイメントのトピック を参照してください。

空のDockerfile

idサービスのDockerfileを開きます。

RequestResponse
# escape=`

ARG BASE_IMAGE

FROM ${BASE_IMAGE}

これは、空のDockerfileの例です。これには、エスケープ ディレクティブと、さらに重要なこととして、渡されたSitecore BASE_IMAGE (Docker Composeで設定) を使用する必要なFROM命令以上のものはありません。

Docker Composeでの構成

また、docker-compose.override.ymlファイルでカスタムSitecoreランタイム イメージのビルドも設定します。

手記

docker-compose.ymlファイルは、Sitecoreに付属するすぐに使用できるDocker Composeファイルです。このdocker-compose.override.ymlは、カスタムSitecoreイメージのビルドと開発に必要なオーバーライドと拡張子を使用してメイン ファイルを拡張します。

cmサービスを設定するには:

  • custom-imagesフォルダのルートにあるdocker-compose.override.ymlファイルを開きます。

    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}
      depends_on:
        - solution
      [...]

    注意すべき重要な点がいくつかあります。

    • 変数値 ( ${SITECORE_DOCKER_REGISTRY}など) は、環境ファイル (.env)、ローカル開発マシンのシステム環境変数、またはビルドサーバー上のシークレットから取得できます。

    • イメージ名には -xp0-cmサフィックスが付きます。デフォルトの変数値では、タグ付けされたバージョンは docker-examples-xp0-cm:latest

    • build context./docker/build/cmに設定されています。Docker Composeは、ここにあるSitecoreランタイムDockerfileを使用します。

    • depends_onは、最初にビルドされるようにsolutionサービスに設定されます。

残りのSitecoreランタイム イメージも同様の方法で構成されます。それらの一部には、entrypointvolumesなど、いくつかの追加プロパティが設定されています。これらはイメージのビルド プロセスでは使用されないため、このトピックでは説明しません。

従来のビルドの調整

ビルドDockerfileはソリューションをビルドするための推奨される方法ですが、より従来の方法を使用し、MSBuildをタスク ランナー、カスタムPowerShellスクリプト、またはその他のビルド ツールと組み合わせて使用する必要があります。これは、主にレガシ コードベースまたはビルド プロセスによる制限による場合です。

従来のビルドに合わせて調整するには:

  1. ビルド出力が、PowerShellまたはその他の手段を使用して、ビルド出力を必要とする各docker\buildフォルダー (この例ではcm ) に移動することを確認します。これは、ビルド成果物が個々のDockerfileのビルド コンテキストの一部となるために必要です。

  2. docker-compose.override.ymlsolutionサービスと依存関係を削除します。

  3. Dockerfileを調整して、solutionイメージではなくローカル ビルド コンテキストからCOPYします。

Sitecoreイメージのビルド

Sitecoreイメージをビルドするには:

  1. Composeファイルが含まれているフォルダーでPowerShellプロンプトを開きます。

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

    RequestResponse
    docker-compose build

    これにより、ソリューション イメージのビルド プロセスが開始され、次に定義されたすべてのカスタムSitecoreランタイム イメージが開始されます。カスタムSitecoreランタイム イメージは、完了すると作成されます。

    RequestResponse
    Building solution
    [...]
    Successfully built baeb10e0ed5a
    Successfully tagged docker-examples-xp0-cm:latest
  3. すべてのDockerイメージをリストして、イメージが作成されたことを確認します。

    RequestResponse
    docker images docker-examples*
    RequestResponse
    REPOSITORY                                   TAG       IMAGE ID       CREATED          SIZE
    docker-examples-xp0-cm                       latest    59bf580e58b0   10 minutes ago   8.79GB
    docker-examples-xp0-xdbsearchworker          latest    861f52e6c9c5   11 minutes ago   7.71GB
    docker-examples-xp0-xdbautomationworker      latest    8a4c0958a121   11 minutes ago   7.69GB
    docker-examples-xp0-cortexprocessingworker   latest    d36565655830   11 minutes ago   7.68GB
    docker-examples-xp0-xconnect                 latest    88c8156afd30   11 minutes ago   8.13GB
    docker-examples-xp0-solr-init                latest    6fd0b5f9c96a   11 minutes ago   5.27GB
    docker-examples-solution                     latest    9d085019cbb7   11 minutes ago   252MB
    docker-examples-xp0-mssql                    latest    dd581e03bfd9   12 minutes ago   8.65GB
    docker-examples-id                           latest    979537c779c9   5 weeks ago      5.82GB

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

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