강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

이수현님의 프로필 이미지
이수현

작성한 질문수

비전공자도 이해할 수 있는 CI/CD 입문·실전

이미지 pull중 no basic auth credentials 문제입니다.

작성

·

37

·

수정됨

0

msa 프로젝트 중 각 마이크로 서비스의 이미지를 pull 하는 곳에서 문제가 생깁니다.

err: ERROR: for seat-service Head "https://139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/v2/seat-service/manifests/1.0": no basic auth credentials

이렇게 에러가 나오게 되네요...

 

IAM 사용자 생성했고 권한 정책에 AmazonEC2ContainerRegistryFullAccess를 추가해줬습니다. 또한 이 사용자를 EC2에 연결까지 했습니다. 추가적으로 helper 설정을 위해 ./docker 폴더를 만들고 config.json에 "credsStore":"ecr-login"도 추가해주어 강의랑 매우 똑같이 만들었습니다.

 

이 deploy.yml 은 github action 코드입니다. 7번에서 이 오류가 발생하게 됩니다.

======선을 기준으로 아래는 docker-compose.yml파일입니다. 이 문제를 어떻게 해결해야할까요? 또한 각 마이크로 서비스에 연결된 데이터베이스가 모두 maraiDB라면 이걸 docker-compose.yml로 이미지화 시켜야하는것이 맞을까요?

# 6. EC2로 Compose 파일 전송
- name: Copy docker-compose.yml to EC2
  uses: appleboy/scp-action@v0.1.7
  with:
    host: ${{ secrets.EC2_HOST }}
    username: ${{ secrets.EC2_USERNAME }}
    key: ${{ secrets.EC2_PRIVATE_KEY }}
    source: "docker-compose.yml"
    target: "/home/ubuntu/movie-project/"
    strip_components: 0
    overwrite: true


# 7. EC2에서 Compose 실행
- name: SSH into EC2 and deploy
  uses: appleboy/ssh-action@v0.1.7
  with:
    host: ${{ secrets.EC2_HOST }}
    username: ${{ secrets.EC2_USERNAME }}
    key: ${{ secrets.EC2_PRIVATE_KEY }}
    script: |
      cd /home/ubuntu/movie-project
                  
      sudo docker-compose down
      sudo docker-compose pull
      sudo docker-compose up -d
================================================
  movie-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/movie-service:1.0
    depends_on:
      - redis

  book-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/book-service:1.0
    depends_on:
      - kafka

  payment-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/payment-service:1.0
    depends_on:
      - kafka

  seat-service:
    image: 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com/seat-service:1.0
    depends_on:
      - kafka

답변 2

0

JSCODE 박재성님의 프로필 이미지
JSCODE 박재성
지식공유자

안녕하세요 수현님! 질문 잘 해주셨어요 !

보내주신 내용들 토대로 디버깅 도와드려볼게요 ~

아래 과정들을 통해 디버깅 해보시는걸 추천드려요 :)

 

"이미지를 pull 하는 곳에서 문제가 생깁니다. no basic auth credentials 이렇게 에러가 나오게 되네요…"

-> 현재 스크립트에서 ECR 로그인 부분에 문제가 있는것 같아요 !

아래와 같이 실제 ECR 주소로 변경하시고, sudo 명령어를 제거한 뒤 시도해보시는 걸 추천드려요 !

script: |
  cd /home/ubuntu/movie-project
  aws ecr get-login-password —region ap-northeast-2 | docker login —username AWS —password-stdin 139144002104.dkr.ecr.ap-northeast-2.amazonaws.com
  docker-compose down
  docker-compose pull
  docker-compose up -d

 

"Docker 권한 문제"

-> EC2에서 ubuntu 사용자가 docker 그룹에 포함되어 있는지 확인해보시는걸 추천드려요 !

sudo usermod -aG docker ubuntu
newgrp docker

 

" 각 마이크로 서비스에 연결된 데이터베이스가 모두 maraiDB라면 이걸 docker-compose.yml로 이미지화 시켜야하는것이 맞을까요?"

-> 실제 운영 환경에서는 docker-compose로 한 번에 띄우지 않고 별도의 서버에 DB를 띄우지만

개발 및 테스트를 위해 docker-compose를 활용해 한 번에 모든 DB를 띄우고 싶으시다면

맞게 구성하신겁니다!

 

위에 말씀드린 방식으로 디버깅 해보시고 여전히 에러가 발생하시면

질문 다시 한 번만 남겨주세요~!!

0

안녕하세요, 인프런 AI 인턴입니다. 이수현님.

Docker에서 이미지를 ECR에서 pull할 때 발생하는 “no basic auth credentials” 오류는 주로 인증 문제로 인해 발생합니다. 아래에 문제를 해결하기 위한 몇 가지 조언을 드리겠습니다.

문제 요약

  • no basic auth credentials 오류는 Docker가 ECR에서 이미지를 가져오기 위해 필요한 인증 정보를 찾을 수 없기 때문에 발생합니다.

해결 방법

  1. ECR 로그인 명령어 실행 확인:

    • deploy.yml의 7번 단계에서 ECR에 로그인하는 명령어가 올바르지 않을 가능성이 있습니다. 명령어를 실행할 때, 실제 AWS 계정 ID와 올바른 리전을 사용해 주시기 바랍니다.
    aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin [AWS 계정 ID].dkr.ecr.ap-northeast-2.amazonaws.com
    
    • EC2 환경에서 직접 실행하여 인증이 제대로 되는지 확인해보세요.
  2. Docker 설정 확인:

    • EC2 인스턴스에 있는 ~/.docker/config.json 파일을 확인하여 올바른 크리덴셜 스토어 설정이 되었는지 확인합니다. "credsStore": "ecr-login" 설정이 .docker/config.json 파일에 정확히 기재되어 있어야 합니다.
  3. IAM 권한 확인:

    • EC2 인스턴스에 부여된 IAM 역할이 AmazonEC2ContainerRegistryReadOnly 또는 AmazonEC2ContainerRegistryFullAccess 권한을 포함하는지 확인하세요.
  4. GitHub Secrets 설정 확인:

    • AWS_ACCESS_KEY_ID 및 AWS_SECRET_ACCESS_KEY 환경변수가 GitHub에 올바르게 설정되어 있는지 확인하세요. 이들은 반드시 ECR에 접근 권한이 있는 IAM 사용자나 역할의 키여야 합니다.
  5. 실행 문맥 확인:

    • sudo docker-compose 명령어가 제대로 된 권한으로 실행되는지 확인해 보세요. Docker는 일반적으로 루트 권한이 필요합니다.

기존 비슷한 질문과 해결 링크

이 방법들을 통해 문제를 해결할 수 있기를 바랍니다. 만약 문제가 지속된다면 추가적인 정보를 제공해 주시면 더 도와드릴 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이수현님의 프로필 이미지
이수현

작성한 질문수

질문하기