第5章 ビルドストラテジーの使用
以下のセクションでは、主なサポートされているビルドストラテジー、およびそれらの使用方法を定義します。
5.1. docker ビルド リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform は Buildah を使用して Dockerfile からコンテナーイメージをビルドします。Dockerfile を使用したコンテナーイメージのビルドの詳細は、Dockerfile リファレンスドキュメント を参照してください。
buildArgs 配列を使用して Docker ビルド引数を設定する場合は、Dockerfile リファレンスドキュメントの ARG および FROM の対話方法 を参照してください。
5.1.1. Dockerfile FROM イメージの置き換え リンクのコピーリンクがクリップボードにコピーされました!
Dockerfile の FROM 命令は、BuildConfig オブジェクトの from パラメーターに置き換えられます。Dockerfile がマルチステージビルドを使用する場合、最後の FROM 命令のイメージを置き換えます。
手順
Dockerfile の
FROM命令をBuildConfigオブジェクトのfromパラメーターに置き換えるには、BuildConfigオブジェクトに次の設定を追加します。strategy: dockerStrategy: from: kind: "ImageStreamTag" name: "debian:latest"strategy: dockerStrategy: from: kind: "ImageStreamTag" name: "debian:latest"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.2. Dockerfile パスの使用 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、docker ビルドは、BuildConfig.spec.source.contextDir フィールドで指定されたコンテキストのルートに配置されている Dockerfile を使用します。
dockerfilePath フィールドでは、ビルドが異なるパスを使用して Dockerfile ファイルの場所 (BuildConfig.spec.source.contextDir フィールドへの相対パス) を特定できます。デフォルトの Dockerfile (例: MyDockerfile) とは異なるファイル名や、サブディレクトリーにある Dockerfile へのパス (例: dockerfiles/app1/Dockerfile) を設定できます。
手順
ビルドの
dockerfilePathフィールドを設定して、Dockerfile を見つけるために別のパスを使用します。strategy: dockerStrategy: dockerfilePath: dockerfiles/app1/Dockerfilestrategy: dockerStrategy: dockerfilePath: dockerfiles/app1/DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.3. docker 環境変数の使用 リンクのコピーリンクがクリップボードにコピーされました!
環境変数を docker ビルドプロセスおよび結果として生成されるイメージで利用可能にするには、環境変数をビルド設定の dockerStrategy 定義に追加できます。
ここに定義した環境変数は、Dockerfile 内で後に参照できるよう単一の ENV Dockerfile 命令として FROM 命令の直後に挿入されます。
変数はビルド時に定義され、アウトプットイメージに残るため、そのイメージを実行するコンテナーにも存在します。
たとえば、ビルドやランタイム時にカスタムの HTTP プロキシーを定義するには以下を設定します。
dockerStrategy:
...
env:
- name: "HTTP_PROXY"
value: "http://myproxy.net:5187/"
dockerStrategy:
...
env:
- name: "HTTP_PROXY"
value: "http://myproxy.net:5187/"
oc set env コマンドで、ビルド設定に定義した環境変数を管理することも可能です。
5.1.4. Docker ビルド引数の追加 リンクのコピーリンクがクリップボードにコピーされました!
buildArgs 配列を使用して、Docker ビルド引数 を設定できます。ビルド引数は、ビルドの開始時に Docker に渡されます。
Dockerfile リファレンスドキュメントの Understand how ARG and FROM interact を参照してください。
手順
Docker ビルドの引数を設定するには、以下のように
buildArgs配列にエントリーを追加します。これは、BuildConfigオブジェクトのdockerStrategy定義の中にあります。以下に例を示します。dockerStrategy: ... buildArgs: - name: "version" value: "latest"dockerStrategy: ... buildArgs: - name: "version" value: "latest"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記nameおよびvalueフィールドのみがサポートされます。valueFromフィールドの設定は無視されます。
5.1.5. docker ビルドによる層の非表示 リンクのコピーリンクがクリップボードにコピーされました!
Docker ビルドは通常、Dockerfile のそれぞれの命令を表す層を作成します。imageOptimizationPolicy を SkipLayers に設定することにより、すべての命令がベースイメージ上部の単一層にマージされます。
手順
imageOptimizationPolicyをSkipLayersに設定します。strategy: dockerStrategy: imageOptimizationPolicy: SkipLayersstrategy: dockerStrategy: imageOptimizationPolicy: SkipLayersCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.6. ビルドボリュームの使用 リンクのコピーリンクがクリップボードにコピーされました!
ビルドボリュームをマウントして、実行中のビルドに、アウトプットコンテナーイメージで永続化しない情報にアクセスできます。
ビルドボリュームは、ビルド時にビルド環境や設定が必要なリポジトリーの認証情報など、機密情報のみを提供します。ビルドボリュームは、データが出力コンテナーイメージに保持されるビルド入力とは異なります。
実行中のビルドがデータを読み取るビルドボリュームのマウントポイントは機能的に pod volume mounts に似ています。
前提条件
- 入力シークレット、config map、またはその両方を BuildConfig オブジェクトに追加している。
手順
BuildConfigオブジェクトのdockerStrategy定義で、ビルドボリュームをvolumes配列に追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
name- 一意の名前を指定します。
destinationPath-
マウントポイントの絶対パスを指定します。
..または:を含めないでください。こうすることで、ビルダーが生成した宛先パスと競合しなくなります。/opt/app-root/srcは、多くの Red Hat S2I 対応イメージのデフォルトのホームディレクトリーです。 type-
ソースのタイプ (
ConfigMap、Secret、またはCSI) を指定します。 secretName- ソースの名前を指定します。
driver- 一時 CSI ボリュームを提供するドライバーを指定します。
readOnly-
読み取り専用ボリュームが提供されることを指定します。この値は
trueに設定する必要があります。 volumeAttributes- (オプション) 一時 CSI ボリュームのボリューム属性を指定します。サポートされる属性キーおよび値については、CSI ドライバーのドキュメントを参照してください。