Django 2.3 서버 구축 및 연결 - AWS ECR 이용해 Docker 비공개로 관리하기

Kwon, Hyojin·2021년 3월 7일
0

Django

목록 보기
6/9
post-custom-banner

Amazon ECR(Elastic Container Registry)

  • 어디서나 컨테이너 이미지와 아티팩트를 손쉽게 저장, 관리, 공유 및 배포할 수 있는 완전관리형 컨테이너 레지스트리
  • 이미지를 가용성이 뛰어난 고성능 아키텍처에 호스팅함으로써 컨테이너 애플리케이션용의 이미지를 안정적으로 배포
  • IAM과 통합되어 각 리포지토리에 대한 리소스 수준의 제어를 제공
  • 선수금이나 약정 없이, 리포지토리에 저장한 데이터와 인터넷으로 전송한 데이터 양에 대한 요금만 지불

<ECR Docker CLI 사용>

  1. AWS 회원가입 혹은 로그인

  2. IAM 사용자 추가 및 AmazonEC2ContainerRegistryFullAccess 정책 연결


  3. 액세스 키 ID 및 비밀 액세스 키 확인

  4. AWS CLI 설치(Linux): https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/install-cliv2-linux.html#cliv2-linux-install

  5. AWS CLI 설정

    • aws configure

    • ~/.aws/config or ~/.aws.configure 확인

      [default]
      region = ap-northeast-2
      output = json
    • ~/.aws/credentials 확인

      [default]
      aws_access_key_id = *******
      aws_secret_access_key = ***********
  6. ECR repository 생성

    • aws ecr create-repository --repository-name <name> --region ap-northeast-2

      # output
      {
          "repository": {
              "repositoryArn": "arn:aws:ecr:ap-northeast-2:************:repository/velog",
              "registryId": "************",
              "repositoryName": "velog",
              "repositoryUri": "************.dkr.ecr.ap-northeast-2.amazonaws.com/velog",
              "createdAt": "2021-03-07T19:48:51+09:00",
              "imageTagMutability": "MUTABLE",
              "imageScanningConfiguration": {
                  "scanOnPush": false
              },
              "encryptionConfiguration": {
                  "encryptionType": "AES256"
              }
          }
      }
  7. ECR 로그인 (Docker CLI와 함께 사용)

    aws ecr get-login-password \
        --region <region> \
    | docker login \
        --username AWS \
        --password-stdin <registryId>.dkr.ecr.<region>.amazonaws.com
        
    # ...
    # Login Succeeded
  8. 로컬에서 Docker 이미지 생성 및 푸쉬

    docker build -t raccoonhj33/velog .
    docker tag raccoonhj33/velog <repositoryUri>
    docker push <repositoryUri>
  9. 서버에서 ECR 똑같이 CLI 설정 및 로그인

    # 안될 경우 try
    sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
    sudo chmod g+rwx "$HOME/.docker" -R
    sudo systemctl restart docker
    sudo chmod 666 /var/run/docker.sock
  10. 서버에서 이미지 풀, 컨테이너 생성 및 실행

    sudo docker pull <repositoryUri>
    sudo docker run --rm -d -it -p 80:80 --name velog <repositoryUri>
    sudo docker cp /tmp/.env velog:/srv/velog  # env 파일 따로 Docker에 복사
    sudo docker exec -d velog python manage.py runserver --settings=config.settings.prod 0.0.0.0:80

profile
파이썬 웹 백엔드 개발자
post-custom-banner

0개의 댓글