# 개발/배포 가이드 ## 개발 모드 ### 실행 ```bash cd /docker/fromis_9 docker compose up -d --build ``` ### 구성 - **Vite** (포트 80): 프론트엔드 개발 서버, HMR 지원 - **Fastify** (포트 3000): 백엔드 API, --watch 모드 - Vite가 `/api`, `/docs` 요청을 localhost:3000으로 프록시 ### 로그 확인 ```bash docker compose logs -f fromis9-frontend ``` ### 코드 수정 - `frontend/`, `backend/` 폴더가 볼륨 마운트됨 - 코드 수정 시 자동 반영 (HMR, watch) --- ## 배포 모드 전환 ### 1. Dockerfile 수정 ```dockerfile # 개발 모드 주석처리 # FROM node:20-alpine # WORKDIR /app # ... # 배포 모드 주석해제 FROM node:20-alpine AS frontend-builder ... ``` ### 2. docker-compose.yml 수정 ```yaml # volumes 주석처리 # volumes: # - ./backend:/app/backend # - ./frontend:/app/frontend # - backend_modules:/app/backend/node_modules # - frontend_modules:/app/frontend/node_modules ``` ### 3. 빌드 및 실행 ```bash docker compose up -d --build ``` --- ## 환경 변수 (.env) ```env # 서버 PORT=80 # 데이터베이스 DB_HOST=mariadb DB_PORT=3306 DB_USER=... DB_PASSWORD=... DB_NAME=fromis9 # Redis REDIS_HOST=fromis9-redis REDIS_PORT=6379 # Meilisearch MEILI_HOST=http://fromis9-meilisearch:7700 MEILI_MASTER_KEY=... # JWT JWT_SECRET=... # AWS S3 AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_REGION=... S3_BUCKET=... # YouTube API YOUTUBE_API_KEY=... ``` --- ## Caddy 설정 `/docker/caddy/Caddyfile`: ```caddyfile fromis9.caadiq.co.kr { import custom_errors request_body { max_size 500MB } reverse_proxy fromis9-frontend:80 } ``` --- ## 유용한 명령어 ```bash # 컨테이너 재시작 docker compose restart fromis9-frontend # 볼륨 포함 완전 재시작 docker compose down -v && docker compose up -d --build # Meilisearch 동기화 curl -X POST https://fromis9.caadiq.co.kr/api/schedules/sync-search \ -H "Authorization: Bearer " # Redis 확인 docker exec fromis9-redis redis-cli KEYS "*" ```