배포 아키텍처 (Deployment Architecture)

[개발자 작업] --> [GitHub Repository (main 브랜치)] --> [GitHub Actions] --> [Docker Hub] --> [운영 서버]

자동 배포 프로세스 (CI/CD Pipeline):

  1. 트리거 (Trigger): • main 브랜치에 코드 푸시 시 GitHub Actions 워크플로우 자동 실행
  2. 빌드 단계 (Build Phase): • Ubuntu 환경에서 소스코드 체크아웃 • npm 캐시 활용하여 의존성 설치 (npm ci) • NestJS 프로젝트 빌드 (npm run build)
  3. Docker 이미지 생성 및 푸시 (Docker Build & Push): • Docker Buildx 설정 • Docker Hub 로그인 (시크릿 사용) • Docker 이미지 빌드 (linux/arm64 플랫폼용) • 이미지를 gooch1744/jujeopton:latest 태그로 Docker Hub에 푸시
  4. 서버 배포 (Deployment): • SSH를 통해 운영 서버에 접속 (포트 12000) • Docker Hub에서 최신 이미지 풀 • 기존 컨테이너 중지 및 제거 • 환경 변수 파일(/home/gooch123/env/.env.dev)을 사용하여 새 컨테이너 실행 • 서버의 4000 포트를 컨테이너의 3000 포트에 매핑

Docker 컨테이너 구성: