サービスコンテナー
サービスコンテナはDockerのコンテナで、BitriseのWorkflow中にアプリのテストや操作に必要なサービスをホストします。サービスはバックグラウンドで実行され、すべてのStepsが終了するとコンテナはクリーンアップされます。
サービスコンテナを定義する際に必要な項目は次のとお りです。
-
コンテナのID。
-
コンテナのタイプ:
service。 -
サービスのイメージ名とバージョン。
イメージの取得任意のパブリックなDockerイメージをDocker Hubから使用できます。
その後、StepまたはStep bundle内でコンテナを参照できます。これらのStepsまたはStep bundlesの実行中に、コンテナが実行されます。
詳細な設定オプションについては、Docker container propertiesをご覧ください。
サービスコンテナの定義Click to copy link
containerプロパティを使用して、Bitrise Workflows用にサービスコンテナを定義します。コンテナはWorkflow Editorで定義することも、設定YAMLフ ァイルに直接記述することもできます。
サービスコンテナを1つ以上定義すると、Stepの実行中にバックグラウンドサービスを実行できます。詳しくはサービスコンテナの実行をご覧ください。
- Workflow Editor
- Configuration YAML
-
Bitrise にアクセスして Log in、左側の Bitrise CI を選択し、プロジェクトを選択します。
-
メインページの Workflows ボタンをクリックします。
-
左側でContainersを選択します。
-
Service containersタブに移動し、Add containerをクリックします。
-
コンテナに必要なプロパティを設定します。設定項目は次のとおりです。
-
Unique ID: このIDは、設定YAMLファイルでコンテナを参照する際に使用します。
-
Image: Dockerイメージの名前とバージョン。Docker Hubにあるイメージや、他のレジストリのイメージを使用できます。
Docker Hubのイメージの場合は
[name]:[version]形式を使用します。他のレジストリの場合は[registry server]/[owner]/[name]:[version]を使用します。

-
-
必要に応じて、Portsフィールドに
[HostPort01]:[ContainerPort01]形式でポートマッピングを追加します。ポートの公開とポートマッピングについて詳しくは、Dockerの公式ドキュメントをご覧ください。
-
Show more optionsをクリックすると、Dockerの認証情報、コンテナのEnvironment Variables、Docker create optionsにアクセスできます。
-
必要に応じて、Dockerの認証情報を設定します。
この認証情報は
docker loginコマンドで使用されます。設定できる項目は次のとおりです。- Registry server: 完全修飾されたレジストリサーバーのURLを指定します。イメージ参照にすでにサーバーが含まれている場合、これは任意です。
- Username。
- Password。
ヒントDockerの認証情報を設定に渡すには、secretsを使用する必要があります。
-
必要に応じて、Docker create optionsフィールドにオプションを追加します。
これらはDockerコンテナのリソースオプションで、
docker container createコマンドに渡されるパラメーターです。使用できるすべてのオプションの一覧については、Dockerのドキュメントをご覧ください。
-
完了したら、Create containerをクリックします。
-
設定YAMLのトップレベルに
containersプロパティを追加します。 -
コンテナのIDを設定します。
このIDは設定内で一意である必要があります。IDはStepsまたはStep bundlesでコンテナを参照する際に使用されます。
containers:postgres: -
コンテナに必要なプロパティを設定します。設定項目は次のとおりです。
- Dockerイメージの名前とバージョンを
name:version形式で指定します。Docker Hubにあるイメージを使用できます。 - コンテナのタイプ:
service。
containers:postgres:type: serviceimage: postgres:16 - Dockerイメージの名前とバージョンを
-
必要に応じて、
[HostPort01]:[ContainerPort01]形式でポートマッピングを設定します。ポートの公開とポートマッピングについて詳しくは、Dockerの公式ドキュメントをご覧ください。
containers:postgres:type: serviceimage: postgres:16ports:- 5432:5432 -
必要に応じて、Dockerの認証情報を設定します。
この認証情報はdocker loginコマンドで使用されます。設定できる項目は次のとおりです。
- サーバー。イメージ参照にすでにサーバーが含まれている場合、これは任意です。
- ユーザー名。
- パスワード。
ヒントDockerの認証情報を設定に渡す際は、secretsの使用をお勧めします。
containers:postgres:type: serviceimage: postgres:16credentials:username: $DOCKER_USERNAMEpassword: $DOCKER_PASSWORDserver: us-central1-docker.pkg.dev -
必要に応じて、
optionsプロパティを使用して追加のDockerコンテナリソースオプション(docker container createコマンドに渡されるパラメーター)を設定します。この例では、サービスにhealthchecksが設定されています。
containers:postgrestype: serviceimage: postgres:16options: >---health-cmd pg_isready--health-interval 10s--health-timeout 5s--health-retries 5使用できるすべてのオプションの一覧については、Dockerのドキュメントをご覧ください。
サービスコンテナの実行Click to copy link
サービスコンテナは、StepまたはStep bundleの実行中に実行できます。StepまたはStep bundleの設定でコンテナを参照すると、Stepの実行中に定義済みのサービスがバックグラウンドで実行されます。
次のことができます。
- Workflow内のStepまたはStep bundleでコンテナを参照する。そのWorkflowが実行されると、参照先のコンテナがバックグラウンドサービスを実行します。
- Step bundleの定義でコンテナを参照する。そのStep bundleがWorkflowに追加されると、それらのサービスコンテナが実行されます。
コンテナは異なるレベルで定義できます。StepsとStep bundlesはどちらも独自のコンテナ設定をサポートしています。これにより、レベル間で階層が形成されます。この階層を管理する原則については、Container nesting rulesをご覧ください。
- Workflow Editor
- Configuration YAML
-
Workflow Editorを開きます。
-
Workflow内でStepまたはStep bundleを選択します。
または、左側のナビゲーションメニューでStep Bundlesを選択し、Step bundleの定義でコンテナを設定することもできます。その後のStepsは同じです。
バンドルの定義デフォルトでは、Step bundleはバンドルの定義で定義されているすべてのサービスコンテナを実行します。特定のWorkflowでバンドルにサー ビスコンテナを設定すると、そのリストはバンドル定義のサービスコンテナを完全に置き換えます。バンドル定義のコンテナを自分のコンテナと一緒に実行し続けたい場合は、Workflowレベルのリストに再度それらを含めてください。
-
Containersを選択します。
-
Service ContainerでAdd containerをクリックし、メニューからコンテナを選択します。
複数のコンテナを追加できます。
-
サービスコンテナがすでに実行中でも、コンテナのクリーンなインスタンスでサービスを実行したい場合は、Recreate containerオプションをオンにします。
デフォルトでは、StepまたはStep bundleは、すでに実行中のコンテナがあればそれを使用します。
-
必要なStepまたはStep bundleに
service_containersプロパティとコンテナ名を追加します。YAMLの配列構文を使用すると、複数のサービスコンテナを追加できます。Stepにサービスコンテナを追加します。
workflows:ci:steps:- git-clone: {}- script:service_containers:- postgres- redisStep bundleにサービスコンテナを追加します。
workflows:ci:steps:- git-clone: {}- script: {}- bundle::test-bundle-id:service_containers:- postgres- redis -
サービスコンテナがすでに実行中でも、コンテナのクリーンなインスタンスでサービスを実行したい場合は、
recreateプロパティをtrueに設定します。デフォルトでは、StepまたはStep bundleは、すでに実行中のコンテナがあればそれを使用します。このデフォルトの動作を変更するには、このプロパティを使用します。
workflows:ci:steps:- git-clone: {}- script:service_containers:- postgres- bundle::test-bundle-id:service_containers:- postgresrecreate: true- redis
サービスコンテナのネットワークアクセスClick to copy link
サービスコンテナはすべて、bitriseという名前の同じdocker networkに参加します。これにより、他のすべてのサービスコンテナやStepの実行コンテナからアクセスできるようになります。
Dockerコマンドを自分で実行するか、docker-composeのようなものを使用することで、独自のバックグラウンドワーカーを実行できます。ただし、必ず同じネットワークを使用してください。
StepグループがStepの実行コンテナを使用していない場合でも、サービスコンテナを使用できます。唯一の違いは、サービスへのアクセス方法です。
Stepの実行コンテナを使用している場合は、<service_id>(サービスの名前)を使用してアクセスします。例: http://postgres:5432。
Stepの実行コンテナを使用していない場合は、localhostを使用してサービスにアクセスします。例: http://localhost:5432。