Spring Boot 기반 백엔드 프로젝트입니다. BitStudio AI API를 활용한 Virtual Try-On 기능을 제공하며, Docker 환경에서 PostgreSQL과 Redis와 함께 실행됩니다.
- Java: 21
- Spring Boot: 4.0.1
- Database: PostgreSQL 16
- AI Engine: Google Gemini 1.5 Flash (가상 피팅) & Google Cloud Vision (의류 분석)
- Cache: Redis 7
- ORM: Spring Data JPA
- HTTP Client: Spring WebFlux (WebClient)
- External API: BitStudio AI API
- Build Tool: Gradle
- Container: Docker & Docker Compose
- CI/CD: GitHub Actions
사용자의 사진에 상/하의를 자연스럽게 합성하는 기능을 제공합니다.
- 비동기 처리: 고해상도 생성 시에도 서버 안정성 유지
- 이미지 최적화: 자동 리사이징 및 타임아웃 방지 로직 적용
다음 도구들이 설치되어 있어야 합니다:
- Docker (20.10 이상)
- Docker Compose (2.0 이상)
- Java 21 (로컬 개발 시)
- Gradle (로컬 개발 시)
프로젝트 루트 디렉토리에 .env 파일을 생성하세요.
# .env.example 파일을 복사하여 .env 파일 생성
cp .env.example .env
# Windows의 경우
copy .env.example .env- 카카오(Kakao) & 구글(Google) 로그인
- 자동 데이터 동기화
- Stateless 인증
- 보안 입장권
프로젝트 실행 후 아래 순서대로 기능을 테스트할 수 있습니다.
- 로그인 진입: 브라우저에서 아래 주소 접속
- 카카오:
http://localhost:8080/oauth2/authorization/kakao - 구글:
http://localhost:8080/oauth2/authorization/google
- 카카오:
- 토큰 획득: 로그인 완료 후 리다이렉트된 Swagger 주소창의
?token=... - 권한 승인: Swagger UI
- 기능 확인: 이후 잠금 표시가 풀린 모든 API를 자유롭게 호출 가능
.env 파일의 값들은 프로젝트에 맞게 수정할 수 있습니다. 기본값으로도 동작합니다.
다음 값들을 .env 파일에 추가해야 소셜 로그인이 작동합니다.
KAKAO_CLIENT_ID=15ec7d8923c... KAKAO_CLIENT_SECRET=y5nI1D0X6M... JWT_SECRET_KEY=vmlmZS1zZWNyZXQta2V5LWZvci1jYXBzdG9uZS1wcm9qZWN0LWZpdHRpbmctc2VydmljZQ==
-
환경변수 파일 생성
# .env.example을 복사하여 .env 파일 생성 cp .env.example .env # Windows: copy .env.example .env
-
Docker Desktop 실행 확인
- Docker Desktop이 실행 중인지 확인하세요.
-
PostgreSQL 및 Redis 컨테이너 시작
docker-compose up -d postgres redis
- PostgreSQL과 Redis가 완전히 시작될 때까지 약 10-20초 대기하세요.
-
애플리케이션 실행
./gradlew bootRun # Windows: gradlew.bat bootRun
docker-compose up -d# 전체 로그 확인
docker-compose logs -f
# 애플리케이션 로그만 확인
docker-compose logs -f app
# PostgreSQL 로그만 확인
docker-compose logs -f postgres# 컨테이너 중지 (데이터는 유지됨)
docker-compose stop
# 컨테이너 중지 및 제거 (데이터는 유지됨)
docker-compose down
# 컨테이너 중지 및 제거 + 볼륨 삭제 (데이터 삭제)
docker-compose down -v# 이미지 재빌드 후 실행
docker-compose up -d --builddocker-compose up -d postgres redis# Gradle을 사용한 실행
./gradlew bootRun
# 또는 빌드 후 실행
./gradlew build
java -jar build/libs/*.jarDocker Compose로 실행한 경우:
# PostgreSQL 컨테이너에 접속
docker exec -it capstone-postgres psql -U capstone_user -d capstone_db로컬 PostgreSQL 클라이언트 사용 시:
psql -h localhost -p 5432 -U capstone_user -d capstone_dbDocker Compose로 실행한 경우:
# Redis 컨테이너에 접속
docker exec -it capstone-redis redis-cli로컬 Redis 클라이언트 사용 시:
redis-cli -h localhost -p 6379애플리케이션이 실행되면 다음 URL로 접속할 수 있습니다:
- 애플리케이션: http://localhost:8080
- Health Check: http://localhost:8080/actuator/health (Actuator 설정 시)
Postman 또는 다른 API 클라이언트를 사용하여 API를 테스트할 수 있습니다.
# 빌드
./gradlew build
# 테스트 실행
./gradlew test
# 테스트 제외하고 빌드
./gradlew build -x testinit.sql 파일에 초기 데이터베이스 스키마나 데이터를 추가할 수 있습니다. 이 파일은 PostgreSQL 컨테이너가 처음 시작될 때 자동으로 실행됩니다.
# 특정 서비스 재시작
docker-compose restart app
# 전체 재시작
docker-compose restart