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

두뇌풀가동님의 프로필 이미지

작성한 질문수

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

도커 이미지 푸시까지는 성공하나, ssh에서 fail이 나옵니다.

해결된 질문

24.08.13 20:51 작성

·

53

0

강의 및 노션에 있는 부분을 최대한 응용해서, next.js app을 생성중입니다.
ecr 저장소에서 도커 이미지가 확실히 푸시되었지만, ssh접속에서 에러가 발생했습니다.

======CMD======
docker stop instagram-server || true
docker rm instagram-server || true
docker pull 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest
docker run -d --name instagram-server -p 3000:3000 767398114270.dkr.ecr.ap-northeast-2.amazonaws.com/instagram-server:latest

======END======
err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server/stop": dial unix /var/run/docker.sock: connect: permission denied
err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Delete "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/containers/instagram-server": dial unix /var/run/docker.sock: connect: permission denied
err: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.44/images/create?fromImage=767398114270.dkr.ecr.ap-northeast-2.amazonaws.com%2Finstagram-server&tag=latest": dial unix /var/run/docker.sock: connect: permission denied
2024/08/13 11:11:21 Process exited with status 1

그래서 workflow를 수정했는데, 밑에 처럼 진행하니 정상처리가 되었습니다.

- name: SSH로 EC2에 접속하기
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.EC2_HOST }} # 인스턴스의 퍼블릭 IP 또는 DNS 이름
          username: ${{ secrets.EC2_USERNAME }} # 일반적으로 'ubuntu' 또는 'ec2-user'
          key: ${{ secrets.EC2_PRIVATE_KEY }} # SSH 개인 키
          script_stop: true
          script: |
            aws ecr get-login-password --region ap-northeast-2 | sudo docker login --username AWS --password-stdin ${{ steps.login-ecr.outputs.registry }}
            sudo docker stop instagram-server || true
            sudo docker rm instagram-server || true
            sudo docker pull ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest
            sudo docker run -d --name instagram-server -p 3000:3000 ${{ steps.login-ecr.outputs.registry }}/instagram-server:latest

혹시 제가 실수하거나 놓친 부분이있을까요??

답변 1

0

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

2024. 08. 14. 08:41

안녕하세요 두뇌풀가동님!

Docker를 설치하는 과정 또는 프로젝트를 내려받을 때

sudo 권한이 필요하게끔 구성이 됐을 수도 있습니다!

 

이 때문에 sudo를 안 붙일 경우 권한 문제가 발생했던 것 같네요!

https://github.com/occidere/TIL/issues/116

위 링크도 같이 참고 한 번 해보시면 좋을 것 같습니다~!!

 

지금 현재 sudo를 붙여서 구성하신 명령어도 크게 문제가 되는 부분은 없으니

작성해주신 코드로 실행시키셔도 충분히 좋은 방법입니다:D

 

이 외로 이해 안 되시는 점이나 궁금하신 점 있으시면 또 질문 남겨주세요~