원클릭으로
deploy-backend
백엔드 배포 (JAR 빌드 → SCP → Docker 재시작). 백엔드 배포, 서버 배포, 프로덕션 반영, backend deploy 요청 시 사용. 배포 명령어가 기억나지 않을 때도 사용.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
백엔드 배포 (JAR 빌드 → SCP → Docker 재시작). 백엔드 배포, 서버 배포, 프로덕션 반영, backend deploy 요청 시 사용. 배포 명령어가 기억나지 않을 때도 사용.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
세션 변경사항을 분석하여 검증 스킬 누락을 탐지합니다. 기존 스킬을 동적으로 탐색하고, 새 스킬을 생성하거나 기존 스킬을 업데이트한 뒤 CLAUDE.md를 관리합니다.
REST API 응답 DTO 일관성 및 에러 코드 표준 검증. API 엔드포인트 추가/수정, DTO 변경, 에러 처리 수정 후 사용. API 계약 변경이 프론트엔드에 영향을 줄 수 있을 때 사용.
Flyway DB 마이그레이션 일관성 검증. 마이그레이션 추가/수정 후 사용.
프론트엔드 UI 컴포넌트 품질 검증 (shadcn/ui + Tailwind 기준). UI 컴포넌트 수정 후 사용.
KB 비동기 인덱싱 파이프라인 검증. 인덱싱 관련 코드 수정 후 사용.
RAG 파이프라인 (답변 작성 + 분석 + 다운로드) 검증. 답변 작성/분석/다운로드 관련 코드 수정 후 사용.
| name | deploy-backend |
| description | 백엔드 배포 (JAR 빌드 → SCP → Docker 재시작). 백엔드 배포, 서버 배포, 프로덕션 반영, backend deploy 요청 시 사용. 배포 명령어가 기억나지 않을 때도 사용. |
Spring Boot 백엔드를 EC2 서버에 배포하는 전 과정을 단계별로 안내합니다. 배포는 JAR 빌드 → SCP 전송 → Docker 재시작 순서로 진행되며, 각 단계에서 실패 시 롤백 가이드를 제공합니다.
~/.ssh/csrag-deployerterraform output ec2_public_ip 또는 Elastic IP 직접 확인/opt/app/ (app.jar, docker-compose.yml, .env)cd backend
./gradlew build
cd backend
./gradlew :app-api:bootJar -x test
app-api/build/libs/app-api-0.1.0-SNAPSHOT.jar-x test로 스킵EC2_IP=$(cd infra/terraform && terraform output -raw ec2_public_ip)
scp -i ~/.ssh/csrag-deployer \
backend/app-api/build/libs/app-api-0.1.0-SNAPSHOT.jar \
ec2-user@${EC2_IP}:/opt/app/app.jar
ssh -i ~/.ssh/csrag-deployer ec2-user@${EC2_IP} \
'cd /opt/app && docker compose down && docker compose up -d'
ssh -i ~/.ssh/csrag-deployer ec2-user@${EC2_IP} \
'sleep 15 && curl -sf http://localhost:8081/actuator/health || echo "HEALTH CHECK FAILED"'
docker logs 확인이전 JAR이 필요하면 서버에서 직접 복원:
ssh -i ~/.ssh/csrag-deployer ec2-user@${EC2_IP} \
'cd /opt/app && docker compose down && docker compose up -d'
롤백용 JAR 백업이 없으므로, 배포 전 로컬에서 이전 커밋의 JAR을 보관하는 것을 권장합니다.
| 증상 | 원인 | 해결 |
|---|---|---|
| Connection refused (SCP) | SSH 키 권한 또는 Security Group | chmod 600 ~/.ssh/csrag-deployer, SG 22번 포트 확인 |
| Docker 시작 실패 | 포트 충돌 또는 메모리 부족 | docker ps -a, free -m 확인 |
| Health check 실패 | DB 연결 또는 환경변수 누락 | /opt/app/.env 확인, RDS 접근성 확인 |
| OOM Killed | JVM 힙 초과 (t4g.small = 2GB) | -Xmx1g 확인, swap 1GB 설정 확인 |
/opt/app/
├── .env # DB, OpenAI, CORS 환경변수
├── docker-compose.yml # 백엔드 컨테이너 정의
├── app.jar # Spring Boot JAR (이 파일을 교체)
└── uploads/ # 업로드된 문서 파일
| File | Purpose |
|---|---|
backend/Dockerfile | Multi-stage 빌드 (temurin:21-jdk → temurin:21-jre) |
backend/app-api/build.gradle | bootJar 설정, JaCoCo 커버리지 |
infra/terraform/ec2.tf | EC2 인스턴스 정의 (t4g.small) |
infra/terraform/scripts/user-data.sh | EC2 초기 설정 스크립트 |