Docker イメージをビルド環境として使用する

Bitbucket Pipelines では、Docker コンテナでビルドを実行します。これらのコンテナでは、ビルド環境を定義する Docker イメージを実行します。Bitbucket が提供する 既定のイメージを使用するか、またはカスタムイメージを取得できます。

Docker Hub、AWS、GCP、Azure、およびインターネットで到達可能なセルフホスト型レジストリにホストされる、パブリックまたはプライベートの Docker イメージがサポートされます (現在 Bitbucket Pipelines ではインターネット経由でアクセスできない Docker イメージにアクセスすることはできません)。

既定のビルド環境

ビルド環境として使用する Docker イメージを指定しない場合、Bitbucket Pipelines は Atlassian が一般的なツールで構築した既定のものを使用します。

既定のイメージは atlassian/default-image:latest です。次のようにバージョンを指定することもできます。

name プラットフォーム すぐに使用可能なアプリケーション

atlassian/default-image:1

atlassian/default-image:latest

ubuntu 14.04
  • wget
  • xvfb
  • curl
  • ssh
  • git: 1.9.1
  • mercurial: 2.8.2
  • java: 1.8u66
  • maven: 3.0.5
  • node: 4.2.1
  • npm: 2.14.7
  • nvm: 0.29.0
  • python: 2.7.6
  • gcc: 4.8.4
  • ant: 1.9.3

atlassian/default-image:2

RECOMMENDED

ubuntu 16.04
  • wget
  • xvfb
  • curl
  • ssh
  • git: 2.7.4
  • mercurial: 3.7.3
  • java: Open-JDK 1.8u151
  • maven: 3.3.9
  • node: 8.9.4
  • npm: 5.6.0
  • nvm: 0.33.8
  • python: 2.7.12
  • gcc: 5.4.0
  • ant: 1.9.6

(lightbulb) ベスト プラクティスのためのヒント: Pipelines の実行を確認したら、デフォルト イメージ以外に使用できるイメージを見つけることをおすすめします。デフォルト イメージは、利用するユーザーのための互換性を最大限に確保することを意図しており、更新頻度は高くありません。また、多数のツールが含まれているため、環境によっては不要な場合が考えられます。つまり、自身で見つけたサイズの小さいビルド イメージのほうが、バグの修正を迅速に反映し、ビルドもすばやく行える可能性があります。

カスタムのビルド環境

既定の環境がニーズに合わない場合、Docker Hub で利用可能なイメージに役立つものがないかどうかを確認することをおすすめします。Docker Hub で利用可能な公式イメージで、Atlassian が推奨し、セットアップ中に Pipelines で構成しているものに、次のような例があります。

ビルド イメージとしてこれらのイメージや Docker Hub 上の別のパブリック イメージを使用する場合、後述のパブリック ビルド イメージの使用のガイドをご参照ください。

独自のレジストリにある既存の Docker イメージを使用する場合、後述のプライベート ビルド イメージの使用のガイドをご参照ください。

独自の Docker イメージを作成する場合、後述のカスタム ビルド環境の作成のガイドをご参照ください。




パブリック ビルド イメージの使用

You can use existing public images hosted on Docker Hub, another registry, or in a self-hosted registry. You can only use images that can be be accessed via the internet. 

例では、次のようになっています。

  • アカウント名は、イメージを所有するアカウントの名前です。
  • ユーザー名、パスワード、およびメール アドレスは、レジストリに対する個人の認証情報です。

Docker Hub でホストされるパブリック イメージ

タグを指定しない場合、Docker では latest バージョンタグを使用します。

image: openjdk

Docker Hub のイメージ バージョンとアカウントの両方を指定した場合の例は次のようになります。

image: account-name/openjdk:8

Docker Hub の外部でホストされるパブリック イメージ

Docker 以外が提供している、プライベート レジストリでホストされているイメージの場合、URL にイメージ名を含めます。

image: docker.someprovider.com/account-name/openjdk:8


プライベート ビルド イメージの使用

セルフホスト型のレジストリや、Docker Hub、Amazon ECR、Google GCR のプライベート イメージなどの、プライベートな Docker レジストリを認証する場合、YAML ファイル内でイメージ構成の一部としてユーザー名とパスワードを提供する必要があります。プロバイダによってはメール アドレスが要求される場合があるため。これを任意で含めることもできます。

Docker Hub でホストされるプライベート イメージ

セキュアな環境変数を使用してユーザー名やパスワードの変数を設定し、それらを次のようにイメージの YAML 構成に含めることができます。

image:
  name: account-name/openjdk:8
  username: $DOCKER_HUB_USERNAME
  password: $DOCKER_HUB_PASSWORD
  email: $DOCKER_HUB_EMAIL


AWS ECR (EC2 コンテナ レジストリ) でホストされるプライベート イメージ

イメージが ECR でホストされている場合、YAML イメージ構成に "aws" セクションを追加し、セキュアな環境変数を使用してアクセス キーと秘密キーを提供できます。

image:
  name: <aws_account_id>.dkr.ecr.<region>.amazonaws.com/openjdk:8
  aws: 
    access-key: $AWS_ACCESS_KEY
    secret-key: $AWS_SECRET_KEY


Google Container Registry (GCR) でホストされるプライベート イメージ

GCR のイメージをプルするには、GCP の管理コンソールで、Pipelines 用に "Viewer" アクセスを持つサービス アカウントを構成する必要があります。

生成された JSON 形式のプライベート キーをダウンロードし、Pipelines のセキュアな環境変数にコピー アンド ペーストします。構成した変数は次の例のように、YAML イメージ構成のパスワード フィールドで直接使用できます。

image:
   name: <region>.gcr.io/<project>/image:latest
username: _json_key
   password: '$GCR_JSON_KEY'


その他のレジストリでホストされるイメージ

ほかのプライベート レジストリを使用する場合、イメージ名にレジストリの URL を含め、次の例のようにユーザー名/パスワードの認証情報を提供する必要があります。

image:
  name: docker.your-company-name.com/account-name/openjdk:8
  username: $USERNAME
  password: $PASSWORD
  email: $EMAIL


イメージのダイジェストの保存

確実に同じイメージを取得するには、イメージのハッシュ値またはダイジェスト値を参照します。ダイジェストは暗号化されたハッシュ値であり、イメージの内容が変更されるとダイジェストも変更されます。イメージのダイジェストを保存することで、変更が行われていない同じイメージを確実に参照できます。

イメージのダイジェストの使用

image:
  name: ubuntu@sha256:a0ee7647e24c8494f1cf6b94f1a3cd127f423268293c25d924fbe18fd82db5a4


イメージのダイジェストの検索

> docker inspect --format='{{.RepoDigests}}' ubuntu

[ubuntu@sha256:a0ee7647e24c8494f1cf6b94f1a3cd127f423268293c25d924fbe18fd82db5a4]


既定ユーザーのオーバーライド

run-as-user としてユーザー UID を指定することで、イメージの既定ユーザーをオーバーライドできます。指定するユーザー UID は、有効なホーム ディレクトリを持つ、イメージ内に存在するものである必要があります。

image:
  name: atlassian/default-image:latest
  run-as-user: 1000




カスタム ビルド環境の作成

独自の Docker ファイルを構築して、ビルド環境として使用することができます。この方法では、ビルドで必要なツールのみを含めることで、ビルド環境を非常に軽量に保つことができます。 

リソース

最終更新日 2018 年 9 月 21 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.