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.)