Skip to main content

サービスコンテナ

サービスコンテナは、Bitriseワークフロー中にアプリのテストや運用に必要なサービスをホストするDockerコンテナです。サービスはバックグラウンドで実行され、すべてのステップが終了するとコンテナはクリーンアップされます

サービスコンテナを定義する場合、以下が必要です。

  • コンテナの ID。

  • コンテナのタイプ: service

  • サービスのイメージ名。

    画像を取得する

    から任意のパブリック Docker イメージを使用できます Docker Hub

その後、ステップまたはステップバンドル内のコンテナを参照できます。コンテナは、これらのステップまたはステップバンドルの実行中に実行されます。

詳細な設定オプションについては、以下をご覧ください。 Docker コンテナのプロパティ

サービスコンテナの定義

以下を使用して、Bitriseワークフロー用のサービスコンテナを定義します container プロパティ。コンテナはワークフローエディターで定義することも、設定 YAML ファイルで直接定義することもできます

少なくとも 1 つのサービスコンテナを定義すると、ステップの実行中にバックグラウンドサービスを実行できます。 サービスコンテナの実行.

ワークフローエディター

コンフィギュレーション YAML

  1. でアプリを開きます ビットライズ

  2. クリック ワークフロー メインページのボタン。

    opening-workflow-editor.png
  3. 左側で選択してください コンテナ

  4. に移動 サービスコンテナ タブをクリックしてから、をクリックします。 コンテナを追加

  5. コンテナに必要なプロパティを設定します。それらは以下のとおりです。

    • ユニーク ID: この ID は、設定 YAML ファイル内のコンテナを参照するために使用されます。

    • 画像: Docker イメージの名前とバージョン。にある任意のイメージを使用できます ドッカーハブ または、他のレジストリーを使用することもできます。

      Docker Hub イメージの場合は、以下を使用してください [name]:[version] フォーマット。他のレジストリーには以下を使用してください [registry server]/[owner]/[name]:[version]

    SCR-20260313-ptnr.png
  6. オプションで、にポートマッピングを追加します ポート のフィールド [HostPort01]:[ContainerPort01] フォーマット。

    ポートパブリッシングとポートマッピングの詳細については、 Docker の公式ドキュメント

  7. クリック その他のオプションを表示 Docker 認証情報、コンテナの環境変数、および Docker 作成オプションにアクセスします。

  8. オプションで、Docker 認証情報を設定します。

    認証情報は、次の目的で使用されます。docker loginコマンド。以下を設定できます。

    • レジストリサーバー: 完全修飾レジストリサーバーの URL でなければなりません。サーバがすでにイメージリファレンスの一部になっている場合は省略できます。

    • ユーザー名

    • [パスワード]

    ヒント

    必ず使用してください シークレット Docker 認証情報を設定に渡すため。

  9. オプションで、にオプションを追加します Docker 作成オプション フィールド。

    Docker コンテナのリソースオプションは次のとおりです。に渡されるパラメータ docker container create コマンド。

    使用可能なすべてのオプションのリストについては、 Docker ドキュメンテーション

  10. 完了したら、をクリックします コンテナを作成

  1. を追加 containers 設定 YAML の最上位にあるプロパティ。

  2. コンテナの ID を設定します。

    設定内で一意である必要があります。ID はステップまたはステップバンドルでコンテナを指すときに使用されます

    containers:
      postgres:
  3. コンテナに必要なプロパティを設定します。それらは以下のとおりです。

    • Docker イメージの名前とバージョン ( name:version フォーマット。にある画像ならどれでも使用できます ドッカーハブ

    • コンテナタイプ: service

    containers:
      postgres:
        type: service
        image: postgres:16
  4. オプションで、でポートマッピングを設定します [HostPort01]:[ContainerPort01] フォーマット。

    ポートパブリッシングとポートマッピングの詳細については、 Docker の公式ドキュメント

    containers:
      postgres:
        type: service
        image: postgres:16
        ports: 
        - 5432:5432
  5. オプションで、Docker 認証情報を設定します。

    認証情報は docker login コマンドに使用されます。以下を設定できます。

    • サーバー。サーバーがすでにイメージリファレンスの一部になっている場合は、このオプションは省略できます。

    • ユーザー名。

    • パスワード。

    ヒント

    シークレットを使用して Docker 認証情報を設定に渡すことをお勧めします。

    containers:
      postgres:
        type: service
        image: postgres:16
        credentials:
          username: $DOCKER_USERNAME
          password: $DOCKER_PASSWORD
          server: us-central1-docker.pkg.dev
  6. オプションで、 options 追加の Docker コンテナリソースオプションを設定するためのプロパティ:に渡されるパラメータ docker container create コマンド。

    この例では、サービスは次のように構成されています ヘルスチェック

    containers:
      postgres
        type: service
        image: postgres:16
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    使用可能なすべてのオプションのリストについては、 Docker ドキュメンテーション

サービスコンテナの実行

サービスコンテナは、ステップまたはステップバンドルの実行中に実行できます。ステップ実行中に定義済みのサービスをバックグラウンドで実行するには、ステップまたはステップバンドル設定のコンテナを参照してください。

次のことができます。

  • ステップ内のコンテナまたはワークフロー内のステップバンドルを参照してください。そのワークフローが実行されると、参照されたコンテナはバックグラウンドサービスを実行します。

  • Step バンドル定義のコンテナを参照してください。そのステップバンドルがワークフローに追加されると、それらのサービスコンテナが実行されます。

コンテナネスティング

コンテナはさまざまなレベルで定義できます。ステップとステップバンドルはどちらも独自のコンテナ設定をサポートしています。これにより、異なるレベル間の階層が作成されます。階層を管理する原則については、以下を参照してください コンテナネスティングルール

ワークフローエディター

コンフィギュレーション YAML

  1. ワークフローエディターを開きます。

  2. ワークフロー内のステップまたはステップバンドルを選択します。

    または、選択することもできます ステップバンドル 左側のナビゲーションメニューで Step バンドル定義のコンテナを設定します。以降のステップは同じです。

    バンドル定義

    デフォルトでは、Step バンドルはバンドル定義で定義されたすべてのサービスコンテナを実行します。どのワークフローでも、バンドルにはサービスコンテナを追加できます。

  3. [選択] コンテナ

  4. アンダー サービスコンテナ、クリック コンテナを追加 メニューからコンテナを選択します。

    複数のコンテナを追加できます。

  5. サービスコンテナはすでに実行されているが、コンテナのクリーンインスタンスでサービスを実行したい場合は、以下を確認してください。 コンテナを再作成してください。 オプション。

    デフォルトでは、Step または Step バンドルは、すでに実行中のコンテナがあればそれを使用します。

  1. を追加 service_containers 必要なステップまたはステップバンドルのプロパティとコンテナ名。YAML 配列構文を使用して複数のサービスコンテナを追加できます

    サービスコンテナをステップに追加:

    workflows:
      ci:
        steps:
        - git-clone: {}
        - script:
            service_containers:
            - postgres
            - redis
    

    サービスコンテナを Step バンドルに追加します。

    workflows:
      ci:
        steps:
        - git-clone: {}
        - script: {}
        - bundle::test-bundle-id:
            service_containers:
            - postgres
            - redis
  2. サービスコンテナはすでに実行されているが、コンテナのクリーンインスタンスでサービスを実行したい場合は、次のように設定します。 recreate プロパティへ true

    デフォルトでは、Step または Step バンドルは、すでに実行中のコンテナがあればそれを使用します。プロパティを使用してデフォルトの動作を変更してください。

    workflows:
      ci:
        steps:
        - git-clone: {}
        - script:
            service_containers:
            - postgres
        - bundle::test-bundle-id:
            service_containers:
            - postgres
                recreate: true
            - redis
    

サービスコンテナのネットワークアクセス

サービスコンテナはすべて同じコンテナに結合されています Docker ネットワーク と呼ばれる bitrise。これにより、他のサービスコンテナやステップ実行コンテナからすべてにアクセスできるようになります。

独自のバックグラウンドワーカーの実行

Docker コマンドを自分で実行するか、次のようなものを使用して、独自のバックグラウンドワーカーを実行できます。 docker-compose ただし、必ず同じネットワークを使用してください。

サービスコンテナは、ステップグループがステップ実行コンテナを使用していない場合でも使用できます。唯一の違いは、サービスへのアクセス方法です。

Use the <service_id> (name of the service) to access it when you are using Step execution container. For example, http://postgres:5432.

ステップ実行コンテナを使用していない場合は、localhost を使用してサービスにアクセスしてください。たとえば、 http://localhost:5432