カスタム Sitecore イメージの作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、ソリューションからのビルド出力を他のアセットと一緒に、ベースの Sitecore ランタイム イメージにレイヤー化して、独自のカスタム Sitecore イメージを作成する方法について説明します。
次の図は、カスタムの Sitecore イメージがどのように作成されるかを示しています。
このトピックでは、Docker のサンプル ソリューションを使用して、カスタムの Sitecore Experience Platform - Single (XP0) イメージを構築する方法について説明します。
このガイドでは、ソリューションをビルドする知識があり、ビルド アーティファクトが含まれている Docker ソリューション イメージを持っているか、従来の方法でビルド出力を利用できることを前提としています。
Docker サンプル リポジトリのクローンをコンピューター上のどこかに作成します (まだ作成していない場合)。このガイドでは、custom-images フォルダーを使用します。
ソリューションの構造を理解する
Docker を使った Sitecore 開発では、代表的なソリューションにdocker フォルダーという新しいフォルダーが導入されます。docker フォルダーには、Docker 開発をサポートするファイルとフォルダーが含まれています。このトピックでは、ビルドフォルダーを中心に説明します。custom-images\docker フォルダーに移動して、ここにある build フォルダーの内容を見てみましょう。
build
[service]
Dockerfile
...
[service]
の各フォルダーについて以下が該当します。
-
Sitecore の特定のトポロジーを構成するコンテナーを表します。この例では、Sitecore Experience Platform - Single (XP0) であるため、
mssql
、solr
、id
、cm
、xconnect
などが該当します。 -
少なくとも
Dockerfile
が含まれています。これは Sitecore ランタイムの Dockerfile です。 -
Docker Compose ファイル内の対応するサービスの Docker ビルド コンテキストとして使用されます。
Docker Examples リポジトリには、Sitecore のすべてのトポロジに関するサービスをカバーするビルド フォルダーが含まれています。
Sitecore ランタイム Dockerfile
Sitecore ランタイム イメージのカスタマイズされたバージョンを構築するには、Sitecore ランタイム Dockerfile を使用します。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
サービスと依存関係を削除します。 -
Dockerfiles が
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