ECS 배포

jiyeong·2025년 2월 2일

ECR

이미지들은 관리, 저장해주는 AWS 저장소이다. 우리가 생성한 도커 이미지를 ECR로 업로드해서 관리한다고 생각하면 된다

1.ECR의 프라이빗 리포지토리 생성하고 도커이미지 배포하기


위에서 생성한 리포지토리에 도커 이미지를 업로드할 예정.

다음 단계를 사용하여 이미지를 인증하고 리포지토리에 푸시한다. (푸시 명령 보기 참고)

  1. 인증 토큰을 검색하고 레지스트리에 대해 Docker 클라이언트를 인증한다. 로컬에 AWS CLI이 설치되어있어야한다.
aws ecr get-login-password --region ap-northeast-3 | docker login --username AWS --password-stdin {생략}.dkr.ecr.ap-northeast-3.amazonaws.com
  1. 다음 명령을 사용하여 도커 이미지를 빌드한다.
    도커 이미지를 빌드하는 명령어로, 현재 디렉토리에서 Dockerfile을 찾고 , 빌드를 하는데 , 빌드된 이미지에 myrecipe라는 태그를 붙인다
docker build -t myrecipe .
또는
docker build --platform=linux/amd64 -t myrecipe .
(플랫폼 지정할 경우)
  • 프로젝트 루트에 생성된 Dockerfile 파일
# 1. OpenJDK 기반 베이스 이미지 선택
FROM amazoncorretto:17-alpine

# 2. Spring 전용 사용자 생성
RUN addgroup -S spring && adduser -S spring -G spring
# 3. 일반 사용자로 실행
USER spring:spring
# 4. JAR 파일 복사
ARG JAR_FILE=./build/libs/*.jar
COPY ${JAR_FILE} app.jar
# 5. 엔트리포인트 설정
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 빌드가 완료되면 이미지에 태그(ex. latest)를 지정하여 이 리포지토리에 푸시한다.
docker tag myrecipe:{tag} {생략}.dkr.ecr.ap-northeast-3.amazonaws.com/myrecipe:{tag}
  1. 이 이미지를 AWS 리포지토리 (myrecipe) 로 푸시한다.
docker push {생략}.dkr.ecr.ap-northeast-3.amazonaws.com/myrecipe:latest

그 결과.

2.ECR 클러스터 생성하기

[참고] 인프라에서 서버리스와 EC2 인스턴스 선택 옵션이 있는데 아래는 그 상세 설명

인프라 워크플로에서 컨테이너가 실행되는 인프라를 구성할 수 있습니다.

유효한 옵션은 다음과 같습니다.

AWS Fargate

Fargate는 사용한 만큼 지불하는 서버리스 컴퓨팅 엔진입니다. Fargate를 사용하면 보안을 위해 서버를 관리하거나, 용량 계획을 처리하거나, 컨테이너 워크로드를 격리할 필요가 없습니다.

Amazon EC2 인스턴스

인스턴스 유형과 인스턴스 수를 선택하고 용량을 관리합니다.

ECS 애니웨어를 사용하는 외부 인스턴스

Amazon ECS Anywhere는 온프레미스 서버 또는 가상 머신 (VM) 과 같은 외부 인스턴스를 Amazon ECS 클러스터에 등록할 수 있도록 지원합니다.

기본적으로 클러스터를 생성할 때 클러스터는 AWS Fargate용으로 구성됩니다.

EC2 인스턴스를 사용하려면 AWS Fargate를 지우고 Amazon EC2 인스턴스를 선택합니다. EC2 인스턴스를 추가할 때 기존 그룹을 사용하거나 용량 공급자의 기능을 수행할 새 Auto Scaling 그룹을 생성할 수 있습니다.

온프레미스 서버를 사용하려면 AWS Fargate를 지우고 ECS Anywhere를 사용하는 외부 인스턴스를 선택합니다. 클러스터 생성이 완료되면 클러스터 세부 정보(Cluster details) 페이지로 이동하여 외부 인스턴스에 대한 등록 명령을 생성한 다음 모든 외부 인스턴스에서 명령을 실행합니다.

ECS

Docker 컨테이너를 이용하여 인프라 환경을 좀 더 편리하게 운영,관리 할 수 있게 해주는 서비스이다

3. ECS Task 정의 만들기

4. ECS 컨테이너>service 생성

default값

(3)에서 생성한 ECS task 를 패밀리로 선택.

default 네트워킹

로드밸런서 추가설정

5. 로드밸런서의 DNS에 접속하기

배포 성공

[참고]https://velog.io/@ekxk1234/ECS-%EC%B2%B4%ED%97%98%EA%B8%B0#%EC%86%8C%EA%B0%9C

profile
꿈꾸는 개발자

0개의 댓글