[AWS] Jenkins + ECR + ECS [3]

pjh·2025년 6월 30일

AWS

목록 보기
5/7

ECS

Elastic Container Service

프리티어 기준

  1. 클러스터 생성

    EC2 인스턴스로 생성. (fargate -> 프리티어 벗어남)
    EC2 인스턴스는 왠만해서는 t2.micro or t3.micro 가 프리티어

    용량은 안전하게 인스턴스 1개만 생성

    용도가 api서버라 public 서브넷만 연결

  2. 태스크 정의

    EC2 인스턴스로 생성
    네트워크는 bridge모드로 설정
    awsvpc : Fargate에서만 필요
    bridge : 동일한 브리지 네트워크에 연결된 각 컨테이너가 서로 통신할 수 있게함
    태스크 크기도 내가 설정한 인스턴스에 맞게 알아서 설정

    이미지 URI는 ECR가면 내가 올린 리포지토리 옆에 URI 복사해서 사용
    퍼블릭 IP:8080 → EC2의 8080 → 컨테이너 8080
    이런식으로 접근하게 할거라서 호스트 포트를 8080으로 설정 (위 그림은 0이라 써있는데 잘못올림)
    그리고 컨테이너 포트도 8080으로 설정

  3. 서비스 생성 및 태스크 실행
    클러스터로 들어가서 서비스 탭에서 생성
    서비스에서 원하는 태스크 : 1 로 생성
    태스크에서는 내가 생성한 테스크를 매핑해주면 끝

  4. 서버 실행

    CloudWatch 태스크 로그

    api 테스트 성공.

💥 오류
ECS 서비스 생성 후 빌드 오류가 남.
CloudWatch log ->
exec /usr/java/openjdk-17/bin/java: exec format error
docker 빌드시, 인텔맥이 아니면 amd64로 빌드됨. x86_64 기반 빌드하려면 아래 코드를 docker 파일에 추가

# docker-compose.yml
services:
	...
    platform: linux/amd64
    ...
...

# dockerfile
docker buildx build --platform linux/amd64 -t [image_name] .

0개의 댓글