カスタムSitecore画像の作成
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、ソリューションのビルド出力やその他のアセットを、ベースのSitecoreランタイムイメージにレイヤーし、自分だけのカスタムSitecoreイメージを作成する方法について説明します。
以下の図はカスタムSitecore画像の作成方法を示しています:
このトピックでは、Docker Examplesソリューションを使ってカスタムのSitecore Experience Platform - Single(XP0) 画像を作成し、これを示しています。
このガイドは、あなたがソリューションを構築し、ビルドアーティファクトを含むDockerソリューションイメージを持っているか、従来の方法でビルド出力が利用可能であることを前提としています。
まだやっていなければ、Docker Examplesリポジトリ をマシン内のどこかにクローンしてください。このガイドでは、custom-imagesフォルダを使用しています。
解の構造を理解する
Dockerを使ったSitecore開発では、典型的な解決策に新しいフォルダ、Dockerフォルダが導入されます。 dockerフォルダにはDocker開発をサポートするファイルやフォルダが含まれています。このトピックでは ビルド フォルダに焦点を当てます。 custom-images\dockerフォルダに移動し、ビルド フォルダの内容をこちらに確認してください:
build service Dockerfile ...
それぞれserviceフォルダー:
- は与えられたSitecore位相を構成するコンテナを表します。この例では、 *Sitecore Experience Platform - 単一(XP0)*であり、 mssql、 solr、 id、 cm、 xconnect、 といったように続きます。
- 最低でも Dockerfileを含みます。これはSitecore実行時のDockerfileです。
- Docker Composeファイル内の対応するサービスのDockerビルドコンテキストとして使用されます。
Docker Examplesリポジトリには 、すべてのSitecoreトポロジーに対応するビルドフォルダが含まれています。
Sitecore runtime Dockerfiles
SitecoreランタイムのDockerfileを使って、カスタマイズされたSitecoreランタイムイメージを構築します。Sitecoreトポロジーを構成する各コンテナごとにDockerfileを作成することをお勧めします。
カスタマイズがなくても、Sitecoreトポロジー内の各ロール(コンテナ)ごとにSitecoreランタイムのDockerfileを作成します。これが推奨される理由は以下の通りです:
- ホットフィックスや将来のカスタマイズを行う専用レイヤーがあります。
- 自分で生成された画像があり、それに名前、タグ付け、ラベル付け、保存が可能で、ソリューションのニーズに応じて管理できます。
Dockerfileのソリューションビルド出力を使った
Dockerfileでソリューションビルド出力をどのように使うかを見るには:
- CMサービスのDockerfileを開きます(例えばC:\sitecore\docker-examples\custom-images\docker\build\cm\Dockerfile)。これはソリューションイメージのビルドアーティファクトを使う例です:
-
ビルド段階の初期化
複数のビルド段階は以下の通りにイニシャルされています:
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}
solution、tooling、spe、sxa画像を取り込み、後で使う名前を付けます(COPY指示付き)。最後の部分は、パスインSitecore BASE_IMAGE(Docker Composeで設定)を使ってカスタム画像を始めます。
-
開発ツールの追加
開発ツールはtooling画像からコピーされます( C:\tools)。 ローカル開発のためのENTRYPOINTを提供するだけでなく、後で変換を適用するためにも使われます。
COPY --from=tooling \tools\ \tools\
-
作業ディレクトリをセット
これはIISイメージを使用するため、ほとんどのカスタマイズはC:\inetpub\wwwroot内で行われます。したがって、これはワーキングディレクトリに設定されています:
WORKDIR C:\inetpub\wwwroot
-
Sitecoreモジュールの追加
モジュールSitecore、CM役割に必要な指示に従って追加されます。 Add Sitecore modulesにはさらに詳しい情報があります。この例にはSitecore PowerShell拡張(SPE)とSitecore Experience Accelerator(SXA)が含まれます:
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:
COPY --from=solution \artifacts\website\ .\
-
変換を追加する
CMサービスには、解変換ファイルと役割変換ファイルの例があります。設定変換の適用にはより多くの情報があります。
まず、解変換をコピーします(出力変換は \artifacts\transforms\の解の例画像に保存されます)、その後役割変換を行います。
COPY --from=solution \artifacts\transforms\ \transforms\solution\ COPY .\transforms\ \transforms\role\
-
変換を適用する
最後に、解と役割変換をウェブのルートに適用します:
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のアイテムシリアライゼーションフレームワークや戦略によっては、cmDockerfileに追加の指示がある場合があります。詳細は アイテム展開トピック をご覧ください。
-
Empty Dockerfile
idサービスのDockerfileを開きます:
escape=`
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
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ファイルを開きます:
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
- 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サービスや依存関係を削除してください。
- DockerファイルをsolutionイメージではなくローカルビルドコンテキストからCOPYするように調整してください。
Sitecore画像を構築
Sitecoreイメージを構築するには:
-
Composeファイルが入っているフォルダでPowerShellプロンプトを開きます。
-
次のコマンドを実行します:
docker-compose build
これによりソリューションイメージのビルドプロセスが開始され、その後すべてのカスタムSitecoreランタイムイメージが定義されます。カスタムSitecoreランタイムイメージは完成後に作成されます:
Building solution ... Successfully built baeb10e0ed5a Successfully tagged docker-examples-xp0-cm
-
すべてのDockerイメージをリストアップして画像が作成されたことを確認します:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE docker-examples-xp0-cm latest baeb10e0ed5a 2 minutes ago 9.75GB docker-examples-xp0-solr latest a6cb09ff4658 2 minutes ago 5.19GB docker-examples-xp0-mssql latest a5d2c06253c4 2 minutes ago 6.62GB docker-examples-xp0-xconnect latest 54ecccb36ec5 2 minutes ago 8.4GB docker-examples-xp0-cortexprocessingworker latest cce1aa42f146 2 minutes ago 7.9GB docker-examples-xp0-xdbautomationworker latest 73a2d8707319 2 minutes ago 7.9GB docker-examples-xp0-xdbsearchworker latest 1b94f7eb2b49 2 minutes ago 7.92GB docker-examples-id latest d60b3e9c21f3 2 minutes ago 5.45GB docker-examples-solution latest 9bb20b2ab6db 7 minutes ago 259MB