일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 레포지토리
- JWT 쓰는 방법
- 게시글 이미지
- JWT
- N+1
- JSON Web Token
- element.style
- 부트캠프
- 게시글 이미지 업로드
- 이미지가 포함된 게시글
- route 53
- Winston
- JWT 쓰는이유
- 메뉴바 한번에
- secret코드
- 3계층구조
- N+1문제
- 토큰
- 알림생성
- 스테이지어스
- getComputedStyle
- 패스파라미터
- unnest
- 알림생성모듈
- .env
- 쿼리스트링
- 메뉴바
- 네비게이션 한번에
- 포트번호
- 환경변수
- Today
- Total
기주
[AWS] AWS ECR을 활용해서 EC2에서 도커로 배포하기-1 본문
AWS ECR을 활용해서 EC2에서 도커로 배포하기
AWS ECR이 뭘까?
- 기존에는 필요한 이미지를 다운 받을때 dockerhub를 이용했었다.
(dockerhub는 이미지를 저장하고 다운받을 수 있는 저장소이다.)
- dockerhub와 같은 역할을 하지만 브랜드만 다른 서비스가 있다. 그것이 AWS ECR이다. AWS ECR도 dockerhub와 마찬가지로 이미지를 저장하고 다운받는 역할을 한다
그럼 왜 dockerhub를 안쓰고 AWS ECR을 쓸까?
최근에는 aws클라우드 환경에서 인프라를 구축하는 일이 많아졌다. AWS ECR을 사용하면
1. AWS Resource(서비스)와 연동이 편하고
2. AWS내에서 한번에 관리할 수 있다는 장점이 있다.
(물론 dockerhub를 써도 상관없다)
AWS ECR을 왜 배울까?
docker를 사용하지 않았을때는 많은 사람들이 github를 사용해서 배포하였다. 프로젝트 코드를 github에 push한뒤에 aws ec2에 접속해서 해당코드를 pull받아서 실행한다.
이 방식은 프로젝트 코드 전체를 EC2로 이동시켜야하며, 프로젝트 코드를 실행시킬 런타임환경(node, jdk)등도 설치되어있어야 실행이된다.
docker의 가장 큰 장점은 이식성이다. docker만 깔려있으면 어디서든 내가 원하는 프로젝트를 실행 시킬 수 있다는 장점이 있다. 이때 github를 활용해 프로젝트 코드 전체를 ec2로 옮겨 docker기반으로 실행시켜도 된다. 하지만 프로젝트에서 필요한 코드에 대해서만 docker 이미지로 빌드해, ec2에서는 그 이미지만 다운받아서 실행시키는게 훨씬 더 단순하다.
정리하자면 AWS ECR을 배우는 이유는 훨씬 더 간단하게 프로젝트를 배포하고 실행시키기위해서이다.
ecr로 ec2에 컨테이너 배포 과정
로컬컴퓨터 --(이미지 푸시)--> ECR --(이미지 풀)--> EC2 의 과정을 거쳐서 이미지가 전달된다.
준비사항
1. 로컬컴퓨터와 ec2에 모두 aws CLI 가 설치되어 있어야한다.
2. ECR 권한이 있는 IAM 사용자 계정을 발급받은 뒤 이 IAM사용자 계정의 액세스키를 로컬컴퓨터에 설정해야한다.
준비사항1 - AWS CLI설치
- 맥OS
brew install awscli
aws --version # 설치 확인
- 윈도우
https://awscli.amazonaws.com/AWSCLIV2.msi # 이 링크에서 다운받아 설치
aws --version # 설치(버전)확인
- 우분투(ec2)
sudo apt install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version # 설치확인
준비사항2 - IAM 사용자 생성 / 등록
1. IAM 사용자 생성하기
AWS IAM - 사용자 - 사용자 생성(사용자이름지정, 직접정책연결) - AmazonEC2ContainerRegistryFullAccess권한 부여
- 사용자 생성
2. IAM 사용자 액세스키 발급
AWS IAM 사용자 - 보안자격증명 - 액세스키 발급 - 외부에서 실행되는 어플리케이션 - 액세스키 생성
※한번 보여진 액세스 키는 다시 볼 수 없으므로 따로 저장해서 잘 관리한다
3. 로컬과 ec2에 액세스키 등록
로컬(AWS CLI 설치된 상태)
aws configure
AWS Access Key ID [None]: [액세스키 입력]
AWS Secret Access Key [None]: [액세스 시크릿 키 입력]
Default region name [None]: [ap-northeast-2 입력]
Default output format [None]: (무시)
EC2(AWS CLI 설치된 상태) (동일)
aws configure
AWS Access Key ID [None]: [액세스키 입력]
AWS Secret Access Key [None]: [액세스 시크릿 키 입력]
Default region name [None]: [ap-northeast-2 입력]
Default output format [None]: (무시)
(준비사항 끝)
AWS ECR(Elastic Container Registry) 셋팅하기
1. ECR 레포지토리 생성
AWS ECR(elastic container registry) - 레포지토리 이름 - 레포지토리 생성
※일반적으로 하나의 ECR 레포지토리에는 한종류의 이미지만 저장하고 관리한다
2. 도커파일 작성
3. ECR에 이미지 PUSH
푸시명령보기 순서따라하기
AWS ECR 레포지토리 - 푸시명령보기
4. 필요한 곳에서 이미지 PULL
AWS ECR 레포지토리 - 이미지 - 이미지 URI복사
docker pull [이미지 URI]
'devops > docker' 카테고리의 다른 글
[docker] docker로 psql DB 컨테이너 버전관리하기 (0) | 2025.01.16 |
---|---|
[docker] docker compose로 nestJS, postgresql, redis 서버 띄우기 (0) | 2024.12.07 |
[docker] docker compose 로 mysql 서버 띄우기 (0) | 2024.12.07 |
[docker] docker로 nestJS 서버띄워보기 (0) | 2024.12.07 |
[docker] 도커파일 만들기1 (0) | 2024.12.07 |