CircleCI では、いくつものサービスコンテナを利用できるので、ジョブの実行時にコンテナのポートを変更することはできません。 CircleCI は、コンテナのポートを自動的に localhost へバインドします。そのため、複数のサービスコンテナが同じポートを必要とする場合に問題が発生します。 例えば、postgres データベースが 2 つある場合などです。 次の例について考えてみます。
version: 2
jobs:
build:
# プライマリコンテナは、リストされている最初のイメージのインスタンスです。
docker:
- image: circleci/node:4.8.2-jessie
- image: postgres:11-alpine-ram
- image: postgres:11-alpine-ram
両方の postgres サービスイメージが、localhost:5432 へのバインドを試み、エラーを引き起こします。 これを防止するには、イメージポートのバインド先のホスト名として使用する名前を、イメージに指定します。
docker:
- image: circleci/node:4.8.2-jessie
- image: postgres:11-alpine-ram
- image: postgres:11-alpine-ram
name: postgres2
name パラメーターを指定することで、2 番目のコンテナは postgres2:5432 から、最初の postgres コンテナは localhost:5432
からアクセスできるようになります。
関連情報
https://circleci.com/docs/2.0/configuration-reference/#docker
コメント
記事コメントは受け付けていません。