AWS CodeBuild에서 docker pull시의 에라 "You have reached your pull rate limit"을 AWS ECR을 사용하여 피하기
처음에
이 기사는 Fusic Advent Calendar 2020의 18 일째 기사입니다.
소개하는 내용
결론
AWS Codebuild에서 ECR에 대해 pull해 보더라도, 안된다면 Docker Hub에서 pull하여 ECR에 push한다.
You have reached your pull rate limit은 docker pull 횟수 제한이 엄격해졌기 때문입니다. pull처를 ECR로 바꾸면 횟수 제한을 신경쓰지 않아도 되는 것에 주목했습니다소개 시작
우선은 엘라 화면입니다.

Codebuild의 buildspec.yaml입니다.
pre_build 단계와 build 단계가 말하고 싶은 부분입니다.
version: 0.2
phases:
install:
runtime-versions:
ruby: 2.7
# ECRへのログイン、ECRへのpushとpullに利用する変数定義
pre_build:
commands:
- $(aws ecr get-login --no-include-email --region ${AWS_DEFAULT_REGION})
- AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)
- ECR_REPOSITORY_NAME=nomorelimit
- WEB_URI=${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${ECR_REPOSITORY_NAME}
# ECRに欲しいdocker image(ECR_RUBY_URI)がないなら、Docker HubからpullしてECRにpushする
build:
commands:
- ECR_RUBY_URI=$WEB_URI:ruby-2.7.1-slim
- DOCKER_RUBY_URI=ruby:2.7.1-slim
- docker pull $ECR_RUBY_URI || (docker pull $DOCKER_RUBY_URI && docker tag $DOCKER_RUBY_URI $ECR_RUBY_URI && docker push $ECR_RUBY_URI && true)
pre_build 단계 자세한 설명
build 단계 상세 설명
ECR_RUBY_URI으로 합니다 DOCKER_RUBY_URI으로 합니다 docker pull $ECR_RUBY_URI || … || (docker pull $DOCKER_RUBY_URI …) $ECR_RUBY_URI으로 바꿉니다 (… && docker tag $DOCKER_RUBY_URI $ECR_RUBY_URI …) $ECR_RUBY_URI을 ECR로 푸시합니다. (… && docker push $ECR_RUBY_URI && true) Dockerfile 활용 (보너스)
ECR의 URI를 Dockerfile의 FROM에서 동적으로 사용할 수 있습니다.
docker의 ARG를 사용하여 위에서 말한
ECR_RUBY_URI을 전달하게 됩니다.docker build --build-arg ECR_RUBY_URI=$ECR_RUBY_URI --file ファイルが/ある/パス/Dockerfile . ARG ECR_RUBY_URI
FROM $ECR_RUBY_URI
# FROM ruby:2.7.1-slim
…
Reference
이 문제에 관하여(AWS CodeBuild에서 docker pull시의 에라 "You have reached your pull rate limit"을 AWS ECR을 사용하여 피하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cheekykorkind/items/154c57e8268d67b7c31e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)