로컬 개발/온보딩
이 문서로 해결할 질문
- 로컬에서 Mealio를 처음 실행하려면 무엇이 필요한가요?
- Docker Compose와 앱(client/producer/consumer)은 어떻게 기동하나요?
.env.local파일은 어디에 두고 무엇을 설정하나요?
Prerequisites
| 항목 | 버전 |
|---|---|
| Node.js | 20+ |
| pnpm | 9+ |
| Docker / Docker Compose | 최신 |
1. 저장소 클론 및 의존성 설치
git clone https://github.com/tkddnr1022/mealio.git
cd mealio
corepack enable
corepack prepare pnpm@latest --activate
pnpm install
2. 환경 변수 준비
개발 환경은 인프라만 Docker, 앱은 호스트에서 기동하는 패턴을 사용합니다.
# 인프라 Compose용 (DB·Kafka·관측)
cp .env.docker.example .env.docker.local
# 호스트에서 앱 실행용
cp client/.env.example client/.env.local
cp server/shared/.env.example server/shared/.env.local
cp server/producer/.env.example server/producer/.env.local
cp server/consumer/.env.example server/consumer/.env.local
| 파일 | 용도 |
|---|---|
.env.docker.local | MongoDB·PostgreSQL·Redis·Kafka·Prometheus·Grafana |
server/shared/.env.local | Prisma·Mongoose·Kafka 토픽 CLI (db:*) |
client/.env.local | Next.js API URL, OAuth 콜백 경로 등 |
server/producer/.env.local | DB URL, Redis, Kafka, JWT, OAuth 클라이언트 |
server/consumer/.env.local | DB URL, Redis, Kafka, OpenAI 등 |
패키지별 상세 변수는 각 패키지 문서를 참고하세요.
APP_ENV는 루트 package.json 스크립트/Compose에서 런타임 주입합니다.
3. 인프라 기동 (Docker Compose)
docker compose --env-file .env.docker.local -f docker/mongodb/compose.yml -f docker/postgres/compose.yml -f docker/redis/compose.yml -f docker/kafka/compose.yml -f docker/kafka-ui/compose.yml -f docker/pushgateway/compose.yml -f docker/prometheus/compose.yml -f docker/grafana/compose.yml up -d
기동되는 서비스: MongoDB, PostgreSQL, Redis, Kafka, Kafka UI, Pushgateway, Prometheus, Grafana.
4. DB 마이그레이션·시드
pnpm run db:prisma:generate
pnpm run db:prisma:migrate:dev
pnpm run db:mongoose:sync-indexes
pnpm run db:prisma:seed
pnpm run db:mongoose:seed
5. 앱 기동
터미널 3개에서 각각 실행합니다.
pnpm run start:producer # API (기본 포트 3000)
pnpm run start:consumer # Kafka Consumer
pnpm run start:client # Next.js (기본 포트 4000)
6. 문서 사이트 (선택)
pnpm start:docs # Docusaurus 개발 서버
로컬 아키텍처 요약
자주 쓰는 명령
| 명령 | 설명 |
|---|---|
pnpm run ci | install + build + lint + test |
pnpm run kpi:rollup | KPI 롤업 배치 (consumer job) |
pnpm run recipe-ingestion:fetch | 레시피 수집 fetch 단계 |