🐳
CodeBuild で docker pull した際の制限に対する対策
CodeBuild で docker pull の制限とは
docker image の pull 回数には制限があります。
公式ドキュメントによると、Docker アカウントを持っていない場合 100回/6時間 でアカウントがあるとその倍で 200回/6時間 しかできません。
普通に開発していたら制限を意識することはありますが、CodeBuild ではそうは行きません。
この制限は IP アドレス単位でカウントされるらしいのですが、CodeBuild の場合立ち上がるインスタンスが IP アドレスを共有するため制限に結構な割合でヒットします。
制限に対する詳細は以下の記事で細かい説明があるのでぜひ。
Docker Hub の Rate Limitに引っかかったのでdocker loginで対策した
https://fu3ak1.hatenablog.com/entry/2020/11/22/122241
対策
上記記事では対策として 3 つ上げられています。
- ECR にイメージをコピーしておく
- CodeBuild を VPC 内で実行させ Elastic IP など固定 IP アドレス経由でアクセスする
- Docker Hub ユーザーを作成してログイン処理を行う
複数人で開発する際に Docker Hub アカウントを作って運用するのも面倒なので今回は ECR へ予め push しておきます。
方法
以下の手順で行いました。
今回は python:3.9-buster
を例にします。
また予め ECR に python
というリポジトリを作ったことを前提とします。
docker pull python:3.9-buster
docker images # このとき python:3.9-buster の image id を控える
docker tag {image id} xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/python:3.9-buster
docker push xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/python:3.9-buster
これで push は完了しました。
後は Dockerfile の FROM
で xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/python:3.9-buster
を指定します。
これによって Docker Hub から pull しないため制限にヒットすることはありません。
Discussion