第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"
    Copy to Clipboard Toggle word wrap

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
    Copy to Clipboard Toggle word wrap

5.1.3. docker 環境変数の使用

環境変数を docker ビルドプロセスおよび結果として生成されるイメージで利用可能にするには、環境変数をビルド設定の dockerStrategy 定義に追加できます。

ここに定義した環境変数は、Dockerfile 内で後に参照できるよう単一の ENV Dockerfile 命令として FROM 命令の直後に挿入されます。

変数はビルド時に定義され、アウトプットイメージに残るため、そのイメージを実行するコンテナーにも存在します。

たとえば、ビルドやランタイム時にカスタムの HTTP プロキシーを定義するには以下を設定します。

dockerStrategy:
...
  env:
    - name: "HTTP_PROXY"
      value: "http://myproxy.net:5187/"
Copy to Clipboard Toggle word wrap

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"
    Copy to Clipboard Toggle word wrap
    注記

    name および value フィールドのみがサポートされます。valueFrom フィールドの設定は無視されます。

5.1.5. docker ビルドによる層の非表示

Docker ビルドは通常、Dockerfile のそれぞれの命令を表す層を作成します。imageOptimizationPolicySkipLayers に設定することにより、すべての命令がベースイメージ上部の単一層にマージされます。

手順

  • imageOptimizationPolicySkipLayers に設定します。

    strategy:
      dockerStrategy:
        imageOptimizationPolicy: SkipLayers
    Copy to Clipboard Toggle word wrap

5.1.6. ビルドボリュームの使用

ビルドボリュームをマウントして、実行中のビルドに、アウトプットコンテナーイメージで永続化しない情報にアクセスできます。

ビルドボリュームは、ビルド時にビルド環境や設定が必要なリポジトリーの認証情報など、機密情報のみを提供します。ビルドボリュームは、データが出力コンテナーイメージに保持されるビルド入力とは異なります。

実行中のビルドがデータを読み取るビルドボリュームのマウントポイントは機能的に pod volume mounts に似ています。

前提条件

  • 入力シークレット、config map、またはその両方を BuildConfig オブジェクトに追加している。

手順

  • BuildConfig オブジェクトの dockerStrategy 定義で、ビルドボリュームを volumes 配列に追加します。以下に例を示します。

    spec:
      dockerStrategy:
        volumes:
          - name: secret-mvn
            mounts:
            - destinationPath: /opt/app-root/src/.ssh
            source:
              type: Secret
              secret:
                secretName: my-secret
          - name: settings-mvn
            mounts:
            - destinationPath: /opt/app-root/src/.m2
            source:
              type: ConfigMap
              configMap:
                name: my-config
          - name: my-csi-volume
            mounts:
            - destinationPath: /opt/app-root/src/some_path
            source:
              type: CSI
              csi:
                driver: csi.sharedresource.openshift.io
                readOnly: true
                volumeAttributes:
                  attribute: value
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    name
    一意の名前を指定します。
    destinationPath
    マウントポイントの絶対パスを指定します。.. または : を含めないでください。こうすることで、ビルダーが生成した宛先パスと競合しなくなります。/opt/app-root/src は、多くの Red Hat S2I 対応イメージのデフォルトのホームディレクトリーです。
    type
    ソースのタイプ (ConfigMapSecret、または CSI) を指定します。
    secretName
    ソースの名前を指定します。
    driver
    一時 CSI ボリュームを提供するドライバーを指定します。
    readOnly
    読み取り専用ボリュームが提供されることを指定します。この値は true に設定する必要があります。
    volumeAttributes
    (オプション) 一時 CSI ボリュームのボリューム属性を指定します。サポートされる属性キーおよび値については、CSI ドライバーのドキュメントを参照してください。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat