Skip to main content

独自のDockerイメージを使用する

概要

Bitriseで独自のDockerイメージを使用したり、ワークフローでカスタムDockerコマンドを実行したりできます。 DockerHubのカスタムイメージまたは独自のDockerfileを使用します。

Docker Hub rate limits

From July 15, 2024, rate limiting will apply on downloads from Docker Hub. If you pull a Docker image from Docker Hub without authentication during a Bitrise build on our Linux machines, you may run into issues because of rate limiting.

Bitrise is mirroring some of the popular public docker images, but to avoid these potential issues with rate limiting, you can either:

  • Authenticate your Docker image pulling requests towards Docker Hub. For the details and Docker's full policy, refer to Docker Hub rate limit.

  • Switch to another Docker registry to store your images.

Bitriseでは、すべてのビルドは、ビルドの最後に破棄される独自の個別の仮想マシンで実行されます。 Androidスタックでは、この目的でDockerを使用しています。スタックにはDockerイメージがプリインストールされていますが、独自のカスタムイメージを使用して、ワークフローでカスタムDockerコマンドを実行できます。 Bitriseで独自のDocker構成を使用するには、次の2つの方法があります。

  1. 走る docker ビルド中に自分自身に命令します。これを行うには、1つ以上を使用します 脚本 ステップ。

  2. ワークフローエディタでカスタム画像を設定します。

macOSスタックにDockerはありません

DockerはどのmacOSベースのスタックにもインストールされていません。 Dockerに関連するガイドは、Linuxベースのスタックにのみ適用されます。

実行することをお勧めします docker を含むコマンド 脚本 上の基本環境のDockerイメージを変更してはならないので手順 スタック あなたが本当にする必要がない限り、タブ!の実行 docker ビルド中のコマンドはより柔軟で、全体的に高レベルの制御を提供します。

GitHubサンプルリポジトリ

サンプルリポジトリは次の場所にあります。 GitHub、を使用してMac / Linuxで実行するように構成されています Bitrise CLI

スクリプトステップを使用したDockerコマンドの実行

ローカルとオンの両方でカスタムDocker構成を使用するための推奨される方法 bitrise.io、Dockerコマンドを実行するためのスクリプトステップをワークフローに追加することです。同じ手順を使用して、Docker Hubなどのサービスに対して自分自身を認証し、選択したイメージを実行できます。

を使用してDockerコマンドを実行する方法に関する3つの例を提供します 脚本 ステップ:

dockerhello-worldを実行しています

注意

公式 hello-world DockerイメージはDockerHubでホストされます。 Docker Hubのイメージを使用する場合は、最初に認証する必要があります。

この例では、公式のスタートガイドに従って、 hello-world Dockerイメージ。この例では bitrise.yml ファイルには、イメージを実行できる簡単なビルド構成が表示されます。

---
format_version: 11
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- push_branch: "*"
  workflow: primary
- pull_request_source_branch: "*"
  workflow: primary
workflows:
  primary:
    steps:
    - activate-ssh-key@4:
        run_if: ''
    - [email protected]: {}
    - script@1:
        title: docker run hello-world
        inputs:
        - content: |-
            #!/bin/bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            docker login -u $DOCKERHUB_USER -p $DOCKERHUB_TOKEN
            docker run hello-world

Dockerfileの構築と実行

あなたはあなた自身を使うことができます Dockerfile Docker環境を定義するためのリポジトリ内のBitriseで:

---
format_version: 11
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- push_branch: "*"
  workflow: primary
- pull_request_source_branch: "*"
  workflow: primary
workflows:
  primary:
    steps:
    - activate-ssh-key@4:
        run_if: ''
    - [email protected]: {}
    - script@1:
        title: docker run
        inputs:
        - content: |-
            #!/bin/bash
            # fail if any commands fails
            set -e
            # debug log
            set -x

            docker build -t bitrise-minimal-sample .
            docker run --rm bitrise-minimal-sample

このワークフローは次のようになります。

  1. リポジトリのクローンを作成します。

  2. 走る docker build -t bitrise-minimal-sample .docker run --rm bitrise-minimal-sample リポジトリのルートにあります。

あなたが持っている場合 Dockerfile リポジトリのルートで次のようになります。

FROM alpine:3.3

CMD cat /etc/alpine-release

出力は次のようになります。

+------------------------------------------------------------------------------+
| (2) docker run hello-world                                                   |
+------------------------------------------------------------------------------+
| id: script                                                                   |
| version: 1.1.3                                                               |
| collection: https://github.com/bitrise-io/bitrise-steplib.git                |
| toolkit: bash                                                                |
| time: 2016-11-21T14:28:23Z                                                   |
+------------------------------------------------------------------------------+
|                                                                              |
+ docker build -t bitrise-minimal-sample .
Sending build context to Docker daemon 69.12 kB

Step 1 : FROM alpine:3.3
3.3: Pulling from library/alpine
985c5f84712b: Pulling fs layer
985c5f84712b: Verifying Checksum
985c5f84712b: Download complete
985c5f84712b: Pull complete
Digest: sha256:ec40755933414575748cecf929f1f2012cace2d2e0f8147e77e652d600ff17d7
Status: Downloaded newer image for alpine:3.3
 ---> 6c2aa2137d97
Step 2 : CMD cat /etc/alpine-release
 ---> Running in 507cfb961cc7
 ---> 02a0da3ac697
Removing intermediate container 507cfb961cc7
Successfully built 02a0da3ac697
+ docker run --rm bitrise-minimal-sample
3.3.3
|                                                                              |
+---+---------------------------------------------------------------+----------+
| ✓ | docker run hello-world                                        | 4.24 sec |
+---+---------------------------------------------------------------+----------+

docker-composeを使用する

を使用して、独自のDockerファイルからDockerイメージを実行することもできます。 docker-compose 指図。と compose, アプリケーションのサービスを構成してから、1つのコマンドですべてのサービスを開始できます。

たとえば、 docker-compose.yml リポジトリルート(Dockerfileがある場所)で次のようになります。

version: '2'
services:
  sample-app:
    build: .

これで、単一のdocker-compose呼び出しでサービスを実行できます。 脚本 ステップ:

- [email protected]:
    title: docker run
    inputs:
    - content: |-
        #!/bin/bash
        # fail if any commands fails
        set -e
        # debug log
        set -x
        docker-compose run --rm sample-app

Docker composeは、イメージを自動的にビルドして実行します。指定する必要はありません -t 以来のタグ services 名前はによって使用されます docker-compose 画像に自動的にタグを付けます。

DockerHubのカスタムDockerイメージを使用する

ご覧のとおり、DockerHubから取得したDockerイメージでBitriseを使用できます dockerhello-worldを実行しています 例。ただし、匿名ユーザー向けの無料プランでは、DockerHubで許可されるイメージプルの数は限られています。ワークフローエディターでイメージを設定した場合、認証は実行されません。プルは、BitriseパブリックIPアドレスからの匿名ユーザーによるプルになります。多くのユーザーがこのオプションを選択しているため、Docker Hubのレート制限は、一部のユーザーがビルドを開始できないことを意味します。

回避策は簡単です。スクリプトステップを使用して独自のDockerHubアカウントで自分自身を認証し、ステップを使用してDockerHubからイメージをプルする必要があります。そうするために:

  1. DockerHubでパーソナルアクセストークンを作成します。

    これは、パスワードの代わりにあなたを認証するために使用されます。

  2. Bitriseで、2つ作成します 秘密の環境変数:1つはDocker Hubユーザー名用で、もう1つはパーソナルアクセストークン用です。

    この例では、 DOCKERHUB_USER DockerHubのユーザー名と DOCKERHUB_TOKEN

  3. 使用 docker login のコマンド 脚本 シークレット環境変数を引数として認証する手順:

    - [email protected]: 
        inputs: 
        - content: | 
            docker login -u $DOCKERHUB_USER -p $DOCKERHUB_TOKEN
    
  4. 使用 docker run のコマンド スクリプトステップ 選択したDockerイメージを実行します。

    この例では、Dockerの公式です hello-world 画像。 hello-worldを、DockerHubから使用する任意のイメージに置き換えることができます。

    - [email protected]: 
        inputs: 
        - content: | 
            docker login -u $DOCKERHUB_USER -p $DOCKERHUB_TOKEN
            docker run hello-world    

ワークフローエディターでのカスタムDockerイメージの設定

bitrise.ioのワークフローエディターで、カスタムDockerイメージへのパスを設定するオプションがあります。

カスタムDocker環境でビルドを実行する場合は、ベースのDockerイメージの1つに基づいて独自のDockerイメージを作成することを強くお勧めします。私たちのイメージには、すべての基本ツールがプリインストールされており、標準のBitriseディレクトリが作成され、環境( $BITRISE_DEPLOY_DIR)設定され、ビルド仮想マシンに事前にキャッシュされます。

ただし、独自のDockerイメージを作成する場合は、このガイドを最初から最後までお読みください。

カスタムAndroidDockerイメージ

独自のAndroidDockerイメージの作成と維持には、かなりの時間がかかる可能性があります。追加のツールをいくつかインストールするだけでよい場合は、たとえば、 脚本 代わりにステップ!詳細については、 追加のツールをインストールする ガイド。本当に必要な場合にのみ、独自のAndroidDockerイメージを使用する必要があります。

DockerHubでホストされているイメージを使用する

Docker Hubでホストされているイメージを使用する場合は、イメージパスを設定しないでください。 スタック ワークフローエディタのタブ!使う 脚本 代わりに、Docker Hubアカウントを認証し、選択したイメージを実行します。

DockerHubのカスタムDockerイメージを使用する

Bitrise画像から独自の画像を作成する

4つの異なるDockerイメージタイプを利用できます。必要に応じて、これらのいずれかに基づいて独自のイメージを作成できます。

DockerHubでホストされているイメージを使用する

Docker Hubでホストされているイメージを使用する場合は、イメージパスを設定しないでください。 スタック ワークフローエディタのタブ!使う 脚本 代わりに、Docker Hubアカウントを認証し、選択したイメージを実行します。

DockerHubのカスタムDockerイメージを使用する

利用可能な画像の1つに基づいて独自の画像を作成するには、ベース画像を一番上に指定します Dockerfile とともに FROM 命令と画像のquay.ioID。この例では、最新バージョンのBitriseベースイメージを使用します。

FROM quay.io/bitriseio/docker-bitrise-base:latest

ベースイメージとして使用するイメージのquay.ioIDを使用する必要があります。例えば、 quay.io/bitriseio/androidquay.io/bitriseio/android-ndkquay.io/bitriseio/android-ndk-lts、 また quay.io/bitriseio/bitrise-base

使用しないでください alpha ビルド用の画像

私たちが持っているすべてのDockerイメージについて quay.io、私たちは alpha タグ付きバージョンも。 NS alpha それらは頻繁に再構築され、事前に準備されていません bitrise.io、だからあなたはそれらを避けるべきです。

ビルドで作成したDockerイメージを使用する

イメージをでプルできる場合は、ワークフローエディターで独自のDockerイメージを設定できます。 docker pull 指図。そうするために:

DockerHubでホストされているイメージを使用する

Docker Hubでホストされているイメージを使用する場合は、イメージパスを設定しないでください。 スタック ワークフローエディタのタブ!使う 脚本 代わりに、Docker Hubアカウントを認証し、選択したイメージを実行します。

DockerHubのカスタムDockerイメージを使用する

  1. ワークフローエディタに移動します。

  2. クリック スタック タブ。

  3. アプリのIDをコピーして貼り付けます。例えば、 quay.io/bitriseio/bitrise-base

    Set custom Docker image on the Stack tab
  4. クリック 保存する 右上隅にあります。

これで、独自のイメージを使用してビルドを実行できるようになります。 bitrise.io