전체 서비스(Frontend, Backend, AI)를 Docker로 한번에 실행하는 배포 레포지토리입니다.
capstone-deploy/
├── docker-compose.yml # 전체 서비스 실행 설정
├── frontend.env.example # 프론트엔드 환경변수 예시
├── backend.env.example # 백엔드 환경변수 예시
├── ai.env.example # AI 서버 환경변수 예시
└── .gitignore # *.env 파일 git 추적 제외
*.env파일은 git에 올라가지 않습니다. 서버에서 직접 생성해야 합니다.
최초 1회만 진행합니다.
sudo apt update
sudo apt install -y docker.io docker-compose-plugin
# 현재 사용자에게 Docker 권한 부여 (재로그인 필요)
sudo usermod -aG docker $USER
exit
# SSH 재접속 후 아래 명령어로 확인
docker --version
docker compose versiongit clone https://github.com/MjuCapstone2026/Capstone-frontend.git
git clone https://github.com/MjuCapstone2026/Capstone-backend.git
git clone https://github.com/MjuCapstone2026/Capstone-ai.git
git clone https://github.com/MjuCapstone2026/Capstone-deploy.git4개의 폴더가 같은 경로에 나란히 있어야 합니다.
~/ ├── Capstone-frontend/ ├── Capstone-backend/ ├── Capstone-ai/ └── Capstone-deploy/
cd capstone-deploy
cp frontend.env.example frontend.env
cp backend.env.example backend.env
cp ai.env.example ai.env각 파일을 열어 실제 값을 채웁니다.
vi frontend.env # EC2 퍼블릭 IP 또는 도메인, Clerk 키
vi backend.env # DB, Redis, Clerk, AI 서버 주소 등
vi ai.env # Gemini API 키, LangSmith 키 등주의:
backend.env의AI_AGENT_URL은http://ai:8000으로 설정합니다. (Docker 내부 네트워크에서 서비스명으로 통신)
cd capstone-deploy
# 전체 빌드 & 백그라운드 실행
docker compose up --build -d# 컨테이너 상태 확인
docker compose ps
# 로그 확인 (전체)
docker compose logs
# 서비스별 로그 확인
docker compose logs frontend
docker compose logs backend
docker compose logs ai| 서비스 | 주소 |
|---|---|
| Frontend | http://<EC2 퍼블릭 IP> |
| Backend Swagger | http://<EC2 퍼블릭 IP>:8080/swagger-ui/index.html |
| AI Swagger | http://<EC2 퍼블릭 IP>:8000/docs |
# 1. 해당 레포에서 최신 코드 받기
cd ../capstone-backend
git pull
# 2. capstone-deploy로 돌아와서 해당 서비스만 재빌드
cd ../capstone-deploy
docker compose up --build -d backendcd ../capstone-frontend && git pull
cd ../capstone-backend && git pull
cd ../capstone-ai && git pull
cd ../capstone-deploy
docker compose up --build -d재빌드 시 다른 서비스는 중단 없이 유지됩니다.
# 전체 중지
docker compose down
# 전체 재시작 (재빌드 없이)
docker compose restart
# 특정 서비스 재시작
docker compose restart backend배포를 반복하면 사용하지 않는 이미지가 쌓입니다. 주기적으로 정리하세요.
# 사용하지 않는 이미지/컨테이너 정리
docker system prune -f# 해당 서비스 로그 확인
docker compose logs backend.env 파일 수정 후 반드시 재빌드가 필요합니다.
docker compose up --build -dsudo lsof -i :8080
sudo kill -9 <PID>