独自の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つの方法があります。
-
走る
docker
ビルド中に自分自身に命令します。これを行うには、1つ以上を使用します 脚本 ステップ。 -
ワークフローエディタでカスタム画像を設定します。
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
このワークフローは次のようになります。
-
リポジトリのクローンを作成します。
-
走る
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からイメージをプルする必要があります。そうするために:
-
DockerHubでパーソナルアクセストークンを作成します。
これは、パスワードの代わりにあなたを認証するために使用されます。
-
Bitriseで、2つ作成します 秘密の環境変数:1つはDocker Hubユーザー名用で、もう1つはパーソナルアクセストークン用です。
この例では、
DOCKERHUB_USER
DockerHubのユーザー名とDOCKERHUB_TOKEN
。 -
使用
docker login
のコマンド 脚本 シークレット環境変数を引数として認証する手順:- [email protected]: inputs: - content: | docker login -u $DOCKERHUB_USER -p $DOCKERHUB_TOKEN
-
使用
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アカウントを認証し、選択したイメージを実行します。
Bitrise画像から独自の画像を作成する
4つの異なるDockerイメージタイプを利用できます。必要に応じて、これらのいずれかに基づいて独自のイメージを作成できます。
DockerHubでホストされているイメージを使用する
Docker Hubでホストされているイメージを使用する場合は、イメージパスを設定しないでください。 スタック ワークフローエディタのタブ!使う 脚本 代わりに、Docker Hubアカウントを認証し、選択したイメージを実行します。
利用可能な画像の1つに基づいて独自の画像を作成するには、ベース画像を一番上に指定します Dockerfile
とともに FROM
命令と画像のquay.ioID。この例では、最新バージョンのBitriseベースイメージを使用します。
FROM quay.io/bitriseio/docker-bitrise-base:latest
ベースイメージとして使用するイメージのquay.ioIDを使用する必要があります。例えば、 quay.io/bitriseio/android
、 quay.io/bitriseio/android-ndk
、 quay.io/bitriseio/android-ndk-lts
、 また quay.io/bitriseio/bitrise-base
。
使用しないでください alpha
ビルド用の画像
私たちが持っているすべてのDockerイメージについて quay.io、私たちは alpha
タグ付きバージョンも。 NS alpha
それらは頻繁に再構築され、事前に準備されていません bitrise.io、だからあなたはそれらを避けるべきです。
ビルドで作成したDockerイメージを使用する
ワークフローエディタで独自のDockerイメージを設定することができます。 docker pull
指示 Ubuntu 20.04 スタックを使用します。
DockerHubでホストされているイメージを使用する
Docker Hubでホストされているイメージを使用する場合は、イメージパスを設定しないでください。 スタック ワークフローエディタのタブ!使う 脚本 代わりに、Docker Hubアカウントを認証し、選択したイメージを実行します。
-
ワークフロー エディターを開きます。
-
選択 スタックとマシン。
-
アプリのIDをコピーして貼り付けます。例えば、
quay.io/bitriseio/bitrise-base
。このオプションは Ubuntu 22.04 では使用できません。
-
変更を保存します。
これで、独自のイメージを使用してビルドを実行できるようになります。 bitrise.io。