Skip to content

[이호성] sprint 11#215

Open
Leon97-dev wants to merge 11 commits intocodeit-bootcamp-nodejs:이호성from
Leon97-dev:leon-docker
Open

[이호성] sprint 11#215
Leon97-dev wants to merge 11 commits intocodeit-bootcamp-nodejs:이호성from
Leon97-dev:leon-docker

Conversation

@Leon97-dev
Copy link
Collaborator

@Leon97-dev Leon97-dev commented Feb 10, 2026

미션 목표

  • Github Actions로 테스트, 배포 자동화
  • Docker 이미지 만들기

요구사항

Github Actions 활용

  • 브랜치에 pull request가 발생하면 테스트를 실행하는 액션을 구현해 주세요.
  • main 브랜치에 push가 발생하면 AWS 배포를 진행하는 액션을 구현해 주세요.
  • 개인 Github 리포지터리에서 Actions 동작을 확인해 보세요.

Docker 이미지 만들기

다음을 만족하는 Dockerfile과 docker-compose.yaml을 작성해 주세요.

  • Express 서버를 실행하는 Dockerfile을 작성해 주세요.
  • Express 서버가 파일 업로드를 처리하는 폴더는 Docker의 Volume을 활용하도록 구현해 주세요.
  • 데이터베이스는 Postgres 이미지를 사용해 연결하도록 구현해 주세요.
  • 실행된 Express 서버 컨테이너는 호스트 머신에서 3000번 포트로 접근 가능하도록 구현해 주세요.

제출 안내

  • 주의: AWS 인증 정보들을 제출 코드에 포함하지 마세요!
  • Github actions는 .github/workflows/ 폴더에 저장해서 제출합니다.
  • Docker 관련 파일들은 프로젝트 폴더 최상위에 저장합니다.

스크린샷

image image image image image

멘토님 리뷰 반영

1️⃣ req.user 타입 안전성 보강

  • 리뷰 내용: req.user! 단정 사용은 컨트롤러 단에서 안전하지 않을 수 있으니 가드 처리 제안
  • 반영 파일: src/controllers/notification-controller.ts
  • 반영 내용:
    • unreadCount에서 const userId = req.user?.id로 추출
    • userId가 없으면 401 응답 반환
    • 이후 notificationService.countUnread(userId) 호출

2️⃣ Socket CORS 범위 축소

  • 리뷰 내용: origin: '*' 대신 환경변수 기반 허용 도메인 제한 제안
  • 반영 파일: src/socket/io.ts, .env.sample
  • 반영 내용:
    • SOCKET_CORS_ORIGINS(쉼표 구분)를 파싱해 허용 origin 배열 구성
    • 값이 없으면 개발 기본값(BASE_URL, http://localhost:3000, http://localhost:5173) 사용
    • origin: '*' 제거 후 origin: allowedOrigins 적용

3️⃣ emitToUser 무시 처리 개선

  • 리뷰 내용: emitToUser가 소켓 미초기화 시 조용히 return하지 말고 호출자가 인지 가능하게 예외 처리 제안
  • 반영 파일: src/socket/io.ts
  • 반영 내용:
    • 기존 if (!io) return;
    • 변경 if (!io) { throw new Error('Socket.IO server is not initialized'); }

4️⃣ 테스트 리셋 전략 개선(beforeEach resetDb 축소)

  • 리뷰 내용: 테스트마다 resetDb()를 돌리면 병렬 실행에 불리하므로 개선 필요
  • 반영 파일:
    • src/__tests__/article.auth.test.ts
    • src/__tests__/article.public.test.ts
    • src/__tests__/product.auth.test.ts
    • src/__tests__/product.public.test.ts
    • src/__tests__/auth.test.ts
  • 반영 내용:
    • 위 파일들의 beforeEach(async () => resetDb())beforeAll(async () => resetDb())로 변경

5️⃣ 서비스 레이어 단위 테스트 보강 (스프린트 9 리뷰)

  • 리뷰 내용: API 테스트 외에 service 레이어 단위 테스트 커버리지 보강 제안
  • 반영 파일: src/__tests__/article.service.unit.test.ts (신규)
  • 반영 내용:
    • articleService.list가 정렬/검색 조건을 저장소로 올바르게 전달하는지 검증
    • 지원하지 않는 order 입력 시 ValidationError 발생 검증
  • 검증 결과
    • npm run -s build 통과
    • npm run -s test 통과 (총 7 suite, 15 tests)
    • 참고:
      • DB 포트 5432는 PostgreSQL 포트
      • Prisma Studio 5555는 Studio 웹 UI 포트(정상 동작)

@Leon97-dev Leon97-dev added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label Feb 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant