第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/Dockerfile
strategy: dockerStrategy: dockerfilePath: dockerfiles/app1/Dockerfile
Copy 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: SkipLayers
strategy: dockerStrategy: imageOptimizationPolicy: SkipLayers
Copy 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 ドライバーのドキュメントを参照してください。