Written on
·
37
·
Edited
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
Answer 2
0
안녕하세요 수현님! 질문 잘 해주셨어요 !
보내주신 내용들 토대로 디버깅 도와드려볼게요 ~
아래 과정들을 통해 디버깅 해보시는걸 추천드려요 :)
"이미지를 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에서 이미지를 가져오기 위해 필요한 인증 정보를 찾을 수 없기 때문에 발생합니다.ECR 로그인 명령어 실행 확인:
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin [AWS 계정 ID].dkr.ecr.ap-northeast-2.amazonaws.com
Docker 설정 확인:
~/.docker/config.json
파일을 확인하여 올바른 크리덴셜 스토어 설정이 되었는지 확인합니다. "credsStore": "ecr-login"
설정이 .docker/config.json 파일에 정확히 기재되어 있어야 합니다.IAM 권한 확인:
GitHub Secrets 설정 확인:
실행 문맥 확인:
sudo docker-compose
명령어가 제대로 된 권한으로 실행되는지 확인해 보세요. Docker는 일반적으로 루트 권한이 필요합니다.이 방법들을 통해 문제를 해결할 수 있기를 바랍니다. 만약 문제가 지속된다면 추가적인 정보를 제공해 주시면 더 도와드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.