Skip to content

[김선영] sprint11#216

Merged
kyungseopk1m merged 6 commits intocodeit-bootcamp-nodejs:김선영from
Sunyoung82:김선영-sprint11
Feb 17, 2026

Hidden character warning

The head ref may contain hidden characters: "\uae40\uc120\uc601-sprint11"
Merged

[김선영] sprint11#216
kyungseopk1m merged 6 commits intocodeit-bootcamp-nodejs:김선영from
Sunyoung82:김선영-sprint11

Conversation

@Sunyoung82
Copy link
Collaborator

@Sunyoung82 Sunyoung82 commented Feb 11, 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 관련 파일들은 프로젝트 폴더 최상위에 저장합니다.

주요 변경사항

스크린샷

스크린샷 2026-02-11 오후 4 44 16 스크린샷 2026-02-11 오후 4 44 32

멘토에게

  • 미션 10 수정과 함께 제출합니다.
  • actions 확인하기 위해 main이 아닌 제 브랜치로 설정해서 진행했습니다.

@Sunyoung82 Sunyoung82 added the 순한맛🐑 마음이 많이 여립니다.. label Feb 11, 2026
Comment on lines +19 to +20
volumes:
- ./uploads:/app/uploads:rw
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Volume을 uploads 폴더에 매핑한 건 요구사항에 맞게 잘 구현하셨는데, 실제 이미지 업로드 코드(imagesController.ts)를 보면 S3에 직접 업로드하는 방식으로 되어있습니다.
로컬 파일시스템의 uploads 폴더에 저장하는 로직이 보이지 않아요.

미션의 요구사항을 충족하려면, 실제로 파일이 해당 경로에 저장되도록 업로드 로직을 맞춰줄 필요가 있을 거 같네요.
multer의 diskStorage를 활용하면 로컬 경로에 저장하는 방식을 구현할 수 있습니다.

Comment on lines +19 to +23
script: |
cd /home/ec2-user/6-sprint-mission
git pull origin 김선영
docker compose down
docker compose up -d --build
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 구조에서는 down → up 사이에 서비스가 중단되는 시간이 발생해요.
지금 단계에서 무중단 배포까지 구현할 필요는 없지만, docker compose downup 사이에 빌드가 포함되어 있어서 다운타임이 길어질 수 있다는 점은 인식하고 계시면 좋겠어요.

docker compose up -d --build만 사용하면 새 컨테이너가 준비된 후 기존 것을 교체하는 방식으로 동작하기도 합니다.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 단일 스테이지 빌드를 사용하고 있어서, 최종 이미지에 devDependencies(jest, ts-jest, prettier 등)와 TypeScript 소스 코드가 모두 포함돼요.
Docker의 multi-stage build 방식을 활용하면 빌드 단계와 실행 단계를 분리해서 최종 이미지 크기를 줄일 수 있습니다.
구글에 Docker multi-stage build Node.js를 검색하여 관련 내용을 한번 살펴보시기 바랍니다.

@kyungseopk1m
Copy link
Collaborator

kyungseopk1m commented Feb 17, 2026

전반적으로 잘 구현하셨습니다.
미션의 핵심 목표를 모두 충족하셨고, 특히 테스트 워크플로우에서 PostgreSQL 서비스 컨테이너에 healthcheck를 설정하거나, docker-compose.yml에서 depends_oncondition: service_healthy로 서비스 기동 순서를 보장한 부분은 단순히 동작만 시키는 것이 아니라 안정성까지 고려한 구현이라 인상적이에요.

설계 영역에서는 멀티 스테이지 빌드가 적용되지 않아 아쉬운데, 이 부분만 보완하면 이미지 크기와 보안 모두 개선할 수 있으니 꼭 시도해보시길 권합니다.
고생 많으셨습니다.

@kyungseopk1m kyungseopk1m merged commit e05c44f into codeit-bootcamp-nodejs:김선영 Feb 17, 2026
1 check failed
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.

2 participants