fromis_9/docs/development.md
caadiq f762302689 docs: 프로젝트 개발환경 문서 추가
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 19:01:27 +09:00

124 lines
2 KiB
Markdown

# 개발/배포 가이드
## 개발 모드
### 실행
```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 <token>"
# Redis 확인
docker exec fromis9-redis redis-cli KEYS "*"
```