第5章 ビルドストラテジーの使用

以下のセクションでは、主なサポートされているビルドストラテジー、およびそれらの使用方法を定義します。

5.1. Docker ビルド

Docker ビルドストラテジーは docker build コマンドを起動するため、Dockerfile とそれに含まれるすべての必要なアーティファクトのあるリポジトリーが実行可能なイメージを生成することを予想します。

5.1.1. Dockerfile FROM イメージの置き換え

DockerfileFROM 命令は、BuildConfigfrom に置き換えられます。Dockerfile がマルチステージビルドを使用する場合、最後の FROM 命令のイメージを置き換えます。

手順

DockerfileFROM 命令は、BuildConfigfrom に置き換えられます。

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 ビルドプロセスおよび結果として生成されるイメージで利用可能にするには、環境変数を BuildConfigdockerStrategy 定義に追加できます。

ここに定義した環境変数は、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 配列にエントリーを追加します。これは、BuildConfigdockerStrategy 定義の中にあります。以下は例になります。

dockerStrategy:
...
  buildArgs:
    - name: "foo"
      value: "bar"