プライベートイメージの使用
プライベート Docker イメージを使用するには、config.yml ファイルの auth
フィールドにユーザー名とパスワードを指定します。 パスワードを保護したい場合は、CircleCI の [Project Settings (プロジェクト設定)] ページで環境変数を作成して、それを参照させるようにします。
jobs:
build:
docker:
- image: acme-private/private-image:321
auth:
username: mydockerhub-user # 文字列リテラル値を指定します
password: $DOCKERHUB_PASSWORD # または、プロジェクトの環境変数を参照するように指定します
また、gcr.io や quay.io などのプライベートリポジトリにあるイメージも使用できます。image
キーに対してリポジトリ/イメージのフル URL を指定し、auth
キーに対して適切なユーザー名とパスワードを使用してください。 以下に例を示します。
- image: quay.io/project/image:tag
auth:
username: $QUAY_USERNAME
password: $QUAY_PASSWORD
または、以下のように machine
Executor を使用する方法もあります。
version: 2
jobs:
build:
machine: true
working_directory: ~/my_app
steps:
# Docker と docker-compose がプリインストールされています
- checkout
# プライベート Docker イメージを使用して固有の所有 DB を開始します
- run: |
docker login -u $DOCKER_USER -p $DOCKER_PASS
docker run -d --name db company/proprietary-db:1.2.3
現在 CircleCI では、Amazon の ECR サービスからのプライベートイメージのプルをサポートしています。 以下の 3つの方法のいずれかで、ECR のプライベートイメージを使用できるようになります。
- CircleCI AWS インテグレーションを使用して、AWS 認証情報を設定する
- CircleCI 標準のプライベート環境変数を使用して、AWS 認証情報を設定する
- aws_auth を使用して、.circleci/config.yml に AWS 認証情報を指定する
version: 2
jobs:
build:
docker:
- image: account-id.dkr.ecr.us-east-1.amazonaws.com/org/repo:0.1
aws_auth:
aws_access_key_id: AKIAQWERVA # 文字列リテラル値を指定します
aws_secret_access_key: $ECR_AWS_SECRET_ACCESS_KEY # または、プロジェクトの UI 環境変数を参照するように指定します
3番目の方法では認証情報に対して任意の変数名を指定できますが、その点を除けば 2番目と 3番目の方法はほぼ同じと言えます。 これは、インフラストラクチャごとに異なる AWS 認証情報を持っている場合に便利です。 たとえば、SaaS アプリケーションに対して短時間のテストを実行し、コミットのたびに Git タグを付けながらステージングインフラストラクチャにデプロイして、本稼働にデプロイする前には本格的なテストスイートを実行します。
version: 2
jobs:
build:
docker:
- image: account-id.dkr.ecr.us-east-1.amazonaws.com/org/repo:0.1
aws_auth:
aws_access_key_id: $AWS_ACCESS_KEY_ID_STAGING
aws_secret_access_key: $AWS_SECRET_ACCESS_KEY_STAGING
steps:
- run:
name: "毎日のテスト"
command: ".... のテスト"
- run:
name: "ステージングインフラストラクチャにデプロイ"
command: "よくわからないもの.... CLI"
deploy:
docker:
- image: account-id.dkr.ecr.us-east-1.amazonaws.com/org/repo:0.1
aws_auth:
aws_access_key_id: $AWS_ACCESS_KEY_ID_STAGING
aws_secret_access_key: $AWS_SECRET_ACCESS_KEY_STAGING
steps:
- run:
name: "全テストスイート"
command: ".... のテスト"
- run:
name: "本稼働インフラストラクチャにデプロイ"
command: "よくわからないもの.... CLI"
workflows:
version: 2
main:
jobs:
- build:
filters:
tags:
only: /^\d{4}\.\d+$/
- deploy:
requires:
- build
filters:
branches:
ignore: /.*/
tags:
only: /^\d{4}\.\d+$/