第5章 ビルドストラテジーの使用
以下のセクションでは、主なサポートされているビルドストラテジー、およびそれらの使用方法を定義します。
5.1. Docker ビルド
Docker ビルドストラテジーは docker build コマンドを起動するため、Dockerfile とそれに含まれるすべての必要なアーティファクトのあるリポジトリーが実行可能なイメージを生成することを予想します。
5.1.1. Dockerfile FROM イメージの置き換え
Dockerfile の FROM
命令は、BuildConfig
の from
に置き換えられます。Dockerfile がマルチステージビルドを使用する場合、最後の FROM
命令のイメージを置き換えます。
手順
Dockerfile の FROM
命令は、BuildConfig
の from
に置き換えられます。
strategy: dockerStrategy: from: kind: "ImageStreamTag" name: "debian:latest"
5.1.2. Dockerfile パスの使用
デフォルトで、Docker ビルドは BuildConfig.spec.source.contextDir
フィールドで指定されたコンテキストのルートに配置されている Dockerfile (名前付きの Dockerfile) を使用します。
dockerfilePath
フィールドでは、ビルドが異なるパスを使用して Dockerfile ファイルの場所 (BuildConfig.spec.source.contextDir
フィールドへの相対パス) を特定できます。デフォルトの Dockerfile (例: MyDockerfile) とは異なるファイル名や、サブディレクトリーにある Dockerfile へのパス (例: dockerfiles/app1/Dockerfile) などを設定できます。
手順
ビルドが Dockerfile を見つけるために異なるパスを使用できるように dockerfilePath
フィールドを使用するには、以下を設定します。
strategy: dockerStrategy: dockerfilePath: dockerfiles/app1/Dockerfile
5.1.3. Docker 環境変数の使用
環境変数を Docker ビルドプロセスおよび結果として生成されるイメージで利用可能にするには、環境変数を BuildConfig
の dockerStrategy
定義に追加できます。
ここに定義した環境変数は、Dockerfile 内で後に参照できるよう単一の ENV
Dockerfile 命令として FROM
命令の直後に挿入されます。
手順
変数はビルド時に定義され、アウトプットイメージに残るため、そのイメージを実行するコンテナーにも存在します。
たとえば、ビルドやランタイム時にカスタムの HTTP プロキシーを定義するには以下を設定します。
dockerStrategy: ... env: - name: "HTTP_PROXY" value: "http://myproxy.net:5187/"
クラスター管理者は、Ansible を使用してグローバルビルドを設定することもできます。
oc set env
コマンドで、BuildConfig
に定義した環境変数を管理することも可能です。
5.1.4. Docker ビルド引数の追加
BuildArgs
配列を使用して Docker ビルド引数 を設定できます。ビルド引数は、ビルドの開始時に Docker に渡されます。
手順
Docker ビルドの引数を設定するには、以下のように BuildArgs
配列にエントリーを追加します。これは、BuildConfig
の dockerStrategy
定義の中にあります。以下は例になります。
dockerStrategy: ... buildArgs: - name: "foo" value: "bar"