fromis_9/docs/development.md
caadiq d4697ad996 refactor: 일정 API source 객체 구조 변경
- source_name, source_url → source: { name, url } 형태로 변경
- YouTube: schedule_youtube에서 video_id로 URL 생성
- X: schedule_x에서 post_id로 URL 생성
- 프론트엔드 전체 파일 source 객체 형태로 수정
- 문서 업데이트 (api.md, architecture.md, migration.md 등)
- tracks → album_tracks 테이블명 변경 반영

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 21:50:04 +09:00

2.6 KiB

개발/배포 가이드

개발 모드

실행

cd /docker/fromis_9
docker compose up -d --build

구성

  • Vite (포트 80): 프론트엔드 개발 서버, HMR 지원
  • Fastify (포트 3000): 백엔드 API, --watch 모드
  • Vite가 /api, /docs 요청을 localhost:3000으로 프록시

로그 확인

docker compose logs -f fromis9-frontend

코드 수정

  • frontend/, backend/ 폴더가 볼륨 마운트됨
  • 코드 수정 시 자동 반영 (HMR, watch)

배포 모드 전환

1. Dockerfile 수정

# 개발 모드 주석처리
# FROM node:20-alpine
# WORKDIR /app
# ...

# 배포 모드 주석해제
FROM node:20-alpine AS frontend-builder
...

2. docker-compose.yml 수정

# volumes 주석처리
# volumes:
#   - ./backend:/app/backend
#   - ./frontend:/app/frontend
#   - backend_modules:/app/backend/node_modules
#   - frontend_modules:/app/frontend/node_modules

3. 빌드 및 실행

docker compose up -d --build

환경 변수 (.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

fromis_9 사이트 설정

fromis9.caadiq.co.kr {
    import custom_errors
    reverse_proxy fromis9-frontend:80
}

설정 설명

  • import custom_errors: 공통 에러 페이지 (403, 404, 500, 502, 503)
  • reverse_proxy fromis9-frontend:80: Docker 네트워크로 프론트엔드 컨테이너에 연결
  • 업로드 크기 제한 없음 (Caddy 기본값)

Caddy 재시작

docker exec caddy caddy reload --config /etc/caddy/Caddyfile

네트워크 구조

인터넷 → Caddy (:443) → fromis9-frontend (:80) → Fastify (:3000)
                                              ↓
                            MariaDB, Redis, Meilisearch (내부 네트워크)

유용한 명령어

# 컨테이너 재시작
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 "*"