GitHub Actions を使用してマルチアーキテクチャイメージを構築する方法を見てきた 前回の記事 に続いて、別の CI を使用して同じことを行う方法を示します。 この記事では、最も使用されている CI SaaS の 1 つである CircleCI について考察します。
CircleCI でイメージの構築を開始するには、まずファイルを作成する必要があります .circleci/config.yml
。
version: 2
jobs:
build:
docker:
- image: docker:stable
steps:
- checkout
- setup_remote_docker:
version: 18.09.3
- run: docker version
buildx にはバージョン 18.09 以降が必要ですが、CircleCI では 18.09.3 以降のバージョンが提供されていないため、Docker エンジンのバージョン 18.09.3 を使用して指定しています。
この時点で、Docker CLI と対話することはできますが、buildx プラグインはまだインストールされていません。 インストールするには、GitHubからビルドをダウンロードします。
version: 2
jobs:
build:
docker:
- image: docker:stable
steps:
- checkout
- setup_remote_docker:
version: 18.09.3
- run: apk add make curl
- run: mkdir -vp ~/.docker/cli-plugins/
- run: curl --silent -L --output ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-amd64
- run: chmod a+x ~/.docker/cli-plugins/docker-buildx
- run: docker buildx version
これで buildx を使用できるようになりました。 非常に冗長なので、何かをビルドするたびにbuildxを再インストールする代わりに、buildxがすでにインストールされている別の オリジンイメージ を使用できます。
version: 2
jobs:
build:
docker:
- image: jdrouet/docker-with-buildx:stable
steps:
- checkout
- setup_remote_docker:
version: 18.09.3
- run: docker buildx version
次に、複数のアーキテクチャ用に構築します。 前の記事で使用したのと同じ Dockerfile と同じビルド コマンドを使用します。
FROM debian:buster-slim
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*
ENTRYPOINT [ "curl" ]
次に、CircleCI 構成ファイルを次のように変更します。
version: 2
jobs:
build:
docker:
- image: jdrouet/docker-with-buildx:stable
steps:
- checkout
- setup_remote_docker:
version: 18.09.3
- run: |
docker buildx build \
--platform linux/arm/v7,linux/arm64/v8,linux/amd64 \
--tag your-username/multiarch-example:buildx-latest .
CircleCI ビルドダッシュボードに移動すると、次の結果が表示されます。
最後の手順では、イメージを Docker ハブに保存します。 これを行うには、書き込みアクセスを取得するために Docker Hubからのアクセストークン が必要になります。
作成したら、[ シークレット ] セクションのリポジトリ設定で設定する必要があります。 後でログインするための変数を作成しますDOCKER_USERNAME
DOCKER_PASSWORD
。
これが完了したら、次のようにログインステップとを --push
buildxコマンドに追加できます。
version: 2
jobs:
build:
docker:
- image: jdrouet/docker-with-buildx:stable
steps:
- checkout
- setup_remote_docker:
version: 18.09.3
- run: docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
- run: |
docker buildx build --push \
--platform linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/i386,linux/amd64
--tag your-username/multiarch-example:buildx-latest .
そして出来上がり、コードベースに変更を加えるたびにマルチアーチイメージを作成できるようになりました!