第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
に置き換えられます。
strategy: dockerStrategy: from: kind: "ImageStreamTag" name: "debian:latest"
strategy:
dockerStrategy:
from:
kind: "ImageStreamTag"
name: "debian:latest"
5.1.2. Dockerfile パスの使用 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、docker ビルドは、BuildConfig.spec.source.contextDir
フィールドで指定されたコンテキストのルートに配置されている Dockerfile を使用します。
dockerfilePath
フィールドでは、ビルドが異なるパスを使用して Dockerfile ファイルの場所 (BuildConfig.spec.source.contextDir
フィールドへの相対パス) を特定できます。デフォルトの Dockerfile (例: MyDockerfile
) とは異なるファイル名や、サブディレクトリーにある Dockerfile へのパス (例: dockerfiles/app1/Dockerfile
) を設定できます。
手順
ビルドが Dockerfile を見つけるために異なるパスを使用できるように dockerfilePath
フィールドを使用するには、以下を設定します。
strategy: dockerStrategy: dockerfilePath: dockerfiles/app1/Dockerfile
strategy:
dockerStrategy:
dockerfilePath: dockerfiles/app1/Dockerfile
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: "foo" value: "bar"
dockerStrategy:
...
buildArgs:
- name: "foo"
value: "bar"
name
および value
フィールドのみがサポートされます。valueFrom
フィールドの設定は無視されます。
5.1.5. docker ビルドによる層の非表示 リンクのコピーリンクがクリップボードにコピーされました!
Docker ビルドは通常、Dockerfile のそれぞれの命令を表す層を作成します。imageOptimizationPolicy
を SkipLayers
に設定することにより、すべての命令がベースイメージ上部の単一層にマージされます。
手順
imageOptimizationPolicy
をSkipLayers
に設定します。strategy: dockerStrategy: imageOptimizationPolicy: SkipLayers
strategy: dockerStrategy: imageOptimizationPolicy: SkipLayers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.1.6. ビルドボリュームの使用 リンクのコピーリンクがクリップボードにコピーされました!
ビルドボリュームをマウントして、実行中のビルドに、アウトプットコンテナーイメージで永続化しない情報にアクセスできます。
ビルドボリュームは、ビルド時にビルド環境や設定が必要なリポジトリーの認証情報など、機密情報のみを提供します。ビルドボリュームは、データが出力コンテナーイメージに保持される ビルド入力 とは異なります。
実行中のビルドがデータを読み取るビルドボリュームのマウントポイントは機能的に pod volume mounts に似ています。
手順
BuildConfig
オブジェクトのdockerStrategy
定義で、ビルドボリュームをvolumes
配列に追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1 5 9
- 必須。一意な名前
- 2 6 10
- 必須。マウントポイントの絶対パス。
..
または:
を含めないでください。こうすることで、ビルダーが生成した宛先パスと競合しなくなります。/opt/app-root/src
は、多くの Red Hat S2I 対応イメージのデフォルトのホームディレクトリーです。 - 3 7 11
- 必須。ソースのタイプは、
ConfigMap
、Secret
、またはCSI
。 - 4 8
- 必須。ソースの名前。
- 12
- 必須。一時 CSI ボリュームを提供するドライバー。
- 13
- 必須。この値は
true
に設定する必要があります。読み取り専用ボリュームを提供します。 - 14
- オプション:一時 CSI ボリュームのボリューム属性。サポートされる属性キーおよび値については、CSI ドライバーのドキュメントを参照してください。
共有リソース CSI ドライバーは、テクノロジープレビュー機能としてサポートされています。