Lesstep
Bitbucket Cloud・Pipelines・2026年11月2日に確認

Bitbucket Pipelines:サービスのコンテナに「Connection refused」

Pipelines のサービス(MySQL・PostgreSQL・Redis など)は、ビルドのコンテナの隣の別のコンテナで動きます。2つは同じネットワークを使うので、サービスは 127.0.0.1 でポートを開き、スクリプトはそこへ繋ぎます。繋がらないときは、たいてい次のどれかが出ます。

psql: error: connection to server at "127.0.0.1", port 5432 failed: Connection refused
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1:3306' (111)
Error: connect ECONNREFUSED ::1:5432
psql: error: could not translate host name "postgres" to address: Name or service not known

ステップにサービスを並べる

Atlassian のデータベースとサービス コンテナによると、サービスは definitions: services: に一度書き、ステップは自分の services: に並べたサービスだけを受け取ります。定義だけでは何も起動しません。繋ぐステップにはどれも一覧が要り、並列のステップも1つずつ書きます。

definitions:
  services:
    postgres:
      image: postgres:15
      variables:
        POSTGRES_DB: testdb
        POSTGRES_USER: testuser
        POSTGRES_PASSWORD: testpass

pipelines:
  default:
    - step:
        services:
          - postgres
        script:
          - export DATABASE_URL=postgresql://testuser:testpass@127.0.0.1:5432/testdb
          - npm test

サービス名ではなく 127.0.0.1

サービスはビルドのコンテナとネットワークのアダプターを共有するので、引くホスト名も、つなぐポートの対応もありません。PostgreSQL は 5432、MySQL は 3306、Redis は 6379、MongoDB は 27017 で待っています。Docker Compose や GitLab CI ではサービスに名前で繋ぎますが、その設定を写すと「could not translate host name」や getaddrinfo ENOTFOUND で止まります。127.0.0.1 を使います。

同じページは、IPv6 の問題を避けるために localhost より 127.0.0.1 を勧めています。クライアントによっては localhost を先に IPv6 の ::1 として引き、エラーにもその番地が出ます。Node.js の ECONNREFUSED ::1:5432 がそうです。

サービスがまだ起動していない

Pipelines はステップと一緒にサービスを起動しますが、準備ができるまでは待ちません。ページの制限の一覧にも「起動を待つ仕組みは組み込まれていない」とあります。準備中のデータベースは最初の接続を断るので、すぐに始まったテストは落ちます。Atlassian の例は、テストの前に until のループで待っています。回数を決めておくと、時間の上限まで回り続けず、1分ほどで諦めます。

script:
  - |
    for i in $(seq 1 30); do
      pg_isready -h 127.0.0.1 && break
      sleep 2
    done
  - pg_isready -h 127.0.0.1
  - npm test

最後の pg_isready は、データベースが最後まで上がらなかったときにステップを失敗させます。確かめるにはビルドのイメージにクライアントが要ります。Atlassian のほかの例は mysql -h 127.0.0.1 ... -e "SELECT 1"、redis-cli -h 127.0.0.1 ping、ヘルスチェックの URL への curl -f です。イメージに入っていなければ、ループのたびに「command not found」が出ます。

サービスが起動しなかった

サービスのコンテナが起動に失敗しても、ビルドのログにはそうと出ないことがあります。2026年3月に立った Atlassian の課題 BCLOUD-24054(英語)がそこにはっきり出すよう求めていて、まだ関心を集めている段階です。理由はサービス自身のログにあります。Pipelines の画面を新しくした Atlassian の2026年10月29日の記事(英語)によると、ステップのログの画面で、サービスのログはドロップダウンにまとめられました。

docker run の中から繋ぐとき

127.0.0.1 は、ビルドのコンテナの番地です。スクリプトが docker run で起こしたコンテナには別の localhost があり、そこにサービスはいません。Atlassian の記事 Connecting to a service container while inside a Docker container(英語・2025年9月26日更新)は、コンテナを --add-host=host.docker.internal:host-gateway つきで起こし、host.docker.internal のサービスのポートへ繋いでいます。ステップにはサービスと docker の両方を並べます。

- step:
    services:
      - postgres
      - docker
    script:
      - docker run --add-host=host.docker.internal:host-gateway my-app \
          psql postgresql://testuser:testpass@host.docker.internal:5432/testdb

サービスは5つまで、ポート 29418 は使えない

1つのステップに並べられるサービスは5つまでで、ポート 29418 は使えません。わけは、Atlassian の「Failed to connect to localhost port 29418」の記事(英語)にあります。ステップから自分のリポジトリへ push できるよう、Pipelines は git を localhost:29418 の内部のプロキシに向けています。

IntelliJ IDEA で Bitbucket Pipelines を見る

Pipeline Inbox for Bitbucket Pipelines は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Bitbucket Cloud の全部のリポジトリのパイプラインを IDE のツールウィンドウに並べ、ステップ、失敗したステップと止まったコマンド、Bitbucket が書くそばから伸びるステップのログを見せます。一覧・ステップ・ログは無料。パイプラインの実行・やり直し・停止は Pro(月 US$1.50・30日の無料試用つき)。

JetBrains Marketplace で入れる

Atlassian・Bitbucket・Bitbucket Pipelines は Atlassian の商標、Docker は Docker, Inc. の商標、MySQL は Oracle の商標、PostgreSQL は PostgreSQL Community Association の商標、Redis は Redis Ltd. の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Atlassian・Docker・Oracle・PostgreSQL Community Association・Redis・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:「Not authorized to perform sts:AssumeRoleWithWebIdentity」(OIDC で AWS) · テストの結果が出ない · 変数が空になる · 「Host key verification failed」(SSH) · 「Cannot connect to the Docker daemon」 · 「authorization denied by plugin pipelines」(Docker) · 「Container 'docker' exceeded memory limit.」 · push したのに Pipelines が動かない · 「Container 'Build' exceeded memory limit.」 · 「Exceeded build time limit of 120 minutes」 · キャッシュが効かない · 「unexpected system error」 · 「command not found」 · サブモジュールを取ってこない · 「We couldn't clone the repository」 · 「No online runner available」 · 「No space left on device」 · 「Step exceeded processing limits」 · 次のステップにアーティファクトが無い · 前は通ったビルドが今は落ちる · Build setup に時間がかかる · ビルド時間を使い切った · 「Permission denied to update branch」 · 「You have reached your pull rate limit」(Docker Hub) · 「There is an error in your bitbucket-pipelines.yml」 · 「This pipeline was paused」(デプロイ) · 「Container 'build' failed to pull image」 · IntelliJ IDEA の Bitbucket Pipelines 用プラグインの比較 · English