カスタムSitecoreイメージの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、ソリューションからのビルド出力を他のアセットと共にベースSitecoreランタイム イメージにレイヤー化して、独自のカスタムSitecoreイメージを作成する方法について説明します。
次の図は、カスタムSitecoreイメージの作成方法を示しています。
このトピックでは、Docker Examplesソリューションを使用して、これを説明するためのカスタムSitecore Experience Platform - Single (XP0) イメージを構築します。
このガイドでは、ソリューションをビルドでき、ビルド成果物を含むDockerソリューション イメージを持っているか、従来の方法でビルド出力を使用できることを前提としています。
Docker Examplesリポジトリをマシン上の場所にまだクローンしていない場合は、クローンします。このガイドでは、custom-imagesフォルダーを使用します。
ソリューションの構造を理解する
Dockerを使用したSitecore開発では、一般的なソリューションであるdockerフォルダーに新しいフォルダーが導入されます。 dockerフォルダには、Docker開発をサポートするためのファイルとフォルダが含まれています。このトピックでは、buildフォルダーに焦点を当てます。 custom-images\dockerフォルダに移動し、次の場所にあるbuildフォルダの内容を確認します。
build
[service]
Dockerfile
...
service各フォルダ:
-
特定のSitecoreトポロジを構成するコンテナーを表します。この例では、Sitecore Experience Platform - Single (XP0)、、solr、id、cm、xconnectなど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)。これは、ソリューション イメージのビルド成果物を使用する例です。
-
ビルドステージの初期化
複数のビルドステージが初期化されます。
RequestResponseARG 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}
solution、tooling、spe、およびsxaイメージが取り込まれ、後で使用するために名前が付けられます(COPY指示付き)。最後の部分では、渡されたSitecore BASE_IMAGE (Docker Composeで設定) を使用してカスタム イメージを開始します。
-
開発ツールを追加
開発ツールは、toolingイメージから( C:\toolsに)コピーされます。 ローカル開発のためのENTRYPOINTを提供するだけでなく、これらは後で変換を適用するために使用されます。
RequestResponseCOPY --from=tooling \tools\ \tools\
-
作業ディレクトリの設定
これはIISイメージを使用するため、ほとんどのカスタマイズは のC:\inetpub\wwwroot内で行われるため、これは作業ディレクトリに設定されます。
RequestResponseWORKDIR C:\inetpub\wwwroot
-
Sitecoreモジュールを追加する
Sitecoreモジュールは、cmロールに必要な手順に従って追加されます。 詳細については、「Sitecoreモジュールの追加 」を参照してください。この例には、Sitecore PowerShell Extensions (SPE) とSitecore Experience Accelerator (SXA) が含まれています。
RequestResponseCOPY --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の例のソリューションイメージに保存されています。
RequestResponseCOPY --from=solution \artifacts\website\ .\
-
変換を追加する
cmサービスには、ソリューション変換ファイルとロール変換ファイルの両方の例があります。構成変換の適用には、詳細があります。
まず、解変換が にコピーされ (出力変換は \artifacts\transforms\のサンプル解像に格納されます)、次にロール変換が行われます。
RequestResponseCOPY --from=solution \artifacts\transforms\ \transforms\solution\ COPY .\transforms\ \transforms\role\
-
変換を適用する
最後に、ソリューションとロール変換がWebルートに適用されます。
RequestResponseRUN 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を開きます。
# 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ファイルを開きます。
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} 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ランタイム イメージも同様の方法で構成されます。それらの一部には、entrypointやvolumesなど、いくつかの追加プロパティが設定されています。これらはイメージのビルド プロセスでは使用されないため、このトピックでは説明しません。
従来のビルドの調整
ビルドDockerfileはソリューションをビルドするための推奨される方法ですが、より従来の方法を使用し、MSBuildをタスク ランナー、カスタムPowerShellスクリプト、またはその他のビルド ツールと組み合わせて使用する必要があります。これは、主にレガシ コードベースまたはビルド プロセスによる制限による場合です。
従来のビルドに合わせて調整するには:
-
ビルド出力が、PowerShellまたはその他の手段を使用して、ビルド出力を必要とする各docker\buildフォルダー (この例ではcm ) に移動することを確認します。これは、ビルド成果物が個々のDockerfileのビルド コンテキストの一部となるために必要です。
-
docker-compose.override.ymlのsolutionサービスと依存関係を削除します。
-
Dockerfileを調整して、solutionイメージではなくローカル ビルド コンテキストからCOPYします。
Sitecoreイメージのビルド
Sitecoreイメージをビルドするには:
-
Composeファイルが含まれているフォルダーでPowerShellプロンプトを開きます。
-
次のコマンドを実行します。
RequestResponsedocker-compose build
これにより、ソリューション イメージのビルド プロセスが開始され、次に定義されたすべてのカスタムSitecoreランタイム イメージが開始されます。カスタムSitecoreランタイム イメージは、完了すると作成されます。
RequestResponseBuilding solution [...] Successfully built baeb10e0ed5a Successfully tagged docker-examples-xp0-cm:latest
-
すべてのDockerイメージをリストして、イメージが作成されたことを確認します。
RequestResponsedocker images docker-examples*
RequestResponseREPOSITORY 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