Bitbucket Pipelines でデータベースを使用してテストする
データベースをテストする際には、サービス コンテナを使用して、データベース サービスをリンクされたコンテナ内で実行することをおすすめします。Docker の Docker Hub では、一般的なデータベースに対応する多数の公式イメージが提供されています。
このページでは、次のデータベース タイプに接続するための bitbucket-pipelines.yml ファイルの例を示しています。
オンライン バリデーターを使用して bitbucket-pipelines.yml ファイルをチェックすることができます。
「Bitbucket Pipelines でサービスとデータベースを使用する」もご参照ください。
また、必要なデータベースを含む Docker イメージを使用することもできます。このページの「データベースを構成済みの Docker イメージを使用する」をご参照ください。
MongoDB
Docker Hub の Mongo イメージを使用します。
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- mongo
definitions:
services:
mongo:
image: mongo
MongoDB は 127.0.0.1:27017
で認証なしで利用できます。データベースに接続すると、MongoDB が代理で作成します。
MongoDB の既定構成は IPv4 の接続のみをリッスンしますが、Mongo 接続で localhost
を使用するように構成している場合、Ruby などのプラットフォームは既定で IPv6 経由での通信を行うことにご注意ください。接続先として localhost
ではなく 127.0.0.1
を推奨しているのはこのためです。
MySQL – テスト ユーザー
Docker Hub の MySQL イメージを使用します。
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- mysql
definitions:
services:
mysql:
image: mysql:5.7
variables:
MYSQL_DATABASE: 'pipelines'
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_USER: 'test_user'
MYSQL_PASSWORD: 'test_user_password'
MySQL への接続
上述の例を使用した場合、MySQL (バージョン 5.7) を次のように利用できます。
- ホスト名:
127.0.0.1
(localhost
の使用は避けます。一部のクライアントがローカルの "Unix socket" 経由での接続を試みるが、これは Pipelinesでは動作しないためです)。 - Port:
3306
- 既定のデータベース:
pipelines
- ユーザー:
test_user
、パスワード:test_user_password
(MySQL の root ユーザーにアクセスすることはできません)。
pipelines データベースにテーブルやスキームを入力する必要があります。基盤となるデータベースをさらに構成する必要がある場合、詳細について公式の Docker Hub イメージをご参照ください。
MySQL – root ユーザー
Docker Hub の MySQL イメージを使用します。
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- mysql
definitions:
services:
mysql:
image: mysql:5.7
variables:
MYSQL_DATABASE: 'pipelines'
MYSQL_ROOT_PASSWORD: 'let_me_in'
MySQL への接続
上述の例を使用した場合、MySQL (バージョン 5.7) を次のように利用できます。
- ホスト名:
127.0.0.1
(localhost
の使用は避けます。一部のクライアントがローカルの "Unix socket" 経由での接続を試みるが、これは Pipelinesでは動作しないためです。) - ポート:
3306
- 既定のデータベース:
pipelines
- ユーザー:
root
、パスワード:let_me_in
pipelines データベースにテーブルやスキームを入力する必要があります。基盤となるデータベースをさらに構成する必要がある場合、詳細について公式の Docker Hub イメージをご参照ください。
PostgreSQL – 既定ユーザー
Docker Hub の Postgres イメージを使用します。
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- postgres
definitions:
services:
postgres:
image: postgres
PostgreSQL は localhost:5432 で、既定データベース "postgres"、ユーザー "postgres"、パスワードはなしで利用できます。postgres データベースにテーブルやスキーマのデータを入力するか、使用するデータベースを新しく作成する必要があります。基盤となるデータベースをさらに構成する必要がある場合、詳細について公式の Docker Hub イメージをご参照ください。
PostgreSQL – テスト ユーザー
Docker Hub の Postgres イメージを使用します。
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- postgres
definitions:
services:
postgres:
image: postgres
variables:
POSTGRES_DB: 'pipelines'
POSTGRES_USER: 'test_user'
POSTGRES_PASSWORD: 'test_user_password'
PostgreSQL は localhost:5432 で、既定データベース "pipelines"、ユーザー "test_user"、パスワード "test_user_password" で利用できます。pipelines データベースにテーブルやスキームを入力する必要があります。基盤となるデータベースをさらに構成する必要がある場合、詳細について公式の Docker Hub イメージをご参照ください。
Redis
Docker Hub の Redis イメージを使用します。
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- redis
definitions:
services:
redis:
image: redis
Redis は localhost:6379 で認証なしで利用できます。
Cassandra
Docker Hub の Cassandra イメージを使用します。
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- sleep 10 # wait for cassandra
- npm test
services:
- cassandra
definitions:
services:
cassandra:
image: cassandra
variables:
MAX_HEAP_SIZE: '512M' # Need to restrict the heapsize or else Cassandra will OOM
HEAP_NEWSIZE: '128M'
Cassandra は localhost:9042 で利用できます。
データベースを構成済みの Docker イメージを使用する
データベース用に独立したコンテナを実行する手順 (推奨手順) の代替案として、データベースをインストール済みの Docker イメージを使用できます。Node や Ruby の次のイメージはデータベースを含み、他の言語やデータベース用に拡張可能です。