AWS #4 ECS 파이프라인 트러블슈팅

AWS #4 ECS 파이프라인 트러블슈팅 #

#2026-02-08


#1

Docker 이미지를 ECR에 푸시하는 원래 코드는 아래와 같았다.

# ECR 로그인
aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com

# 백엔드 빌드 & 푸시
cd /Users/yshmbid/Documents/home/github/StudyNote/backend
docker build -t studynote-backend .
docker tag studynote-backend:latest 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-backend:latest
docker push 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-backend:latest

# 프론트엔드 빌드 & 푸시
cd /Users/yshmbid/Documents/home/github/StudyNote/frontend
docker build -t studynote-frontend .
docker tag studynote-frontend:latest 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-frontend:latest
docker push 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-frontend:latest

# 푸시 후 ECS 서비스를 재시작
aws ecs update-service --cluster studynote-cluster --service studynote-backend-service --force-new-deployment
aws ecs update-service --cluster studynote-cluster --service studynote-frontend-service --force-new-deployment

그 다음 url로 접속한다: http://studynote-alb-123356897.ap-northeast-2.elb.amazonaws.com

#

#2 트러블슈팅

안내받은대로 했는데 창은 제대로 뜨지만 사이드바가 비어있었다.

/api/docs/structure가 [] 반환하는것이었고 백엔드 Dockerfile에서 COPY . .은 backend/ 폴더 내용만 복사하는데 docs/, _index.md, data/는 프로젝트 루트에 있어서 빌드 컨텍스트에 포함되지 않았다.

이에 빌드 컨텍스트를 프로젝트 루트로 바꿔주고 이에 맞게 main.py와 푸시 명령어도 바꿔줬다.

# 1. Dockerfile 수정 — 빌드 컨텍스트를 프로젝트 루트로 변경
COPY backend/requirements.txt .
COPY backend/ .
COPY docs/ /project/docs/
COPY _index.md /project/_index.md
COPY data/ /project/data/
ENV BASE_DIR=/project

# 2. main.py 수정 — BASE_DIR을 환경변수에서 읽도록 변경
BASE_DIR = Path(os.environ.get("BASE_DIR", str(Path(__file__).parent.parent)))

# 3. 빌드 명령 변경 — 프로젝트 루트에서 -f 옵션으로 빌드
# 변경 전 (backend/ 안에서)
cd StudyNote/backend
docker build --platform linux/amd64 -t studynote-backend .

# 변경 후 (프로젝트 루트에서)
cd StudyNote
docker build --platform linux/amd64 -t studynote-backend -f backend/Dockerfile .

#

#cf2 트러블슈팅후 바뀐 코드

백엔드를 backend/ 안에서 빌드하면 docs/, _index.md, data/가 빌드 컨텍스트에 포함되지 않아서 실패한다.

프로젝트 루트(StudyNote/)에서 -f backend/Dockerfile .으로 빌드해야함.

# 백엔드 (프로젝트 루트에서 빌드)
cd /Users/yshmbid/Documents/home/github/StudyNote
docker build --platform linux/amd64 -t studynote-backend -f backend/Dockerfile .
docker tag studynote-backend:latest 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-backend:latest
docker push 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-backend:latest

# 프론트엔드 (그대로)
cd /Users/yshmbid/Documents/home/github/StudyNote/frontend
docker build --platform linux/amd64 -t studynote-frontend .
docker tag studynote-frontend:latest 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-frontend:latest
docker push 949346723599.dkr.ecr.ap-northeast-2.amazonaws.com/studynote-frontend:latest

# 서비스 재시작
aws ecs update-service --cluster studynote-cluster --service studynote-backend-service --force-new-deployment
aws ecs update-service --cluster studynote-cluster --service studynote-frontend-service --force-new-deployment

#