환경 변수
이 문서로 해결할 질문
@mealio/sharedCLI(마이그레이션·시드)에 필요한 env는 무엇인가요?- producer·consumer 런타임 env와 어떻게 맞춰야 하나요?
- shared 패키지가 정의하는 관측성 env 검증 규칙은 어디서 쓰이나요?
개요
@mealio/shared는 독립 실행 앱이 아니며, Prisma·Mongoose CLI가 DB에 접속할 때 env를 읽습니다.
cp server/shared/.env.example server/shared/.env.local
APP_ENV는 루트 package.json의 db:* 스크립트에서 런타임 주입합니다. Prisma·Mongoose CLI는 server/shared/.env.local(local) 또는 .env.{APP_ENV}.local + .env.local fallback 순으로 env를 로드합니다.
런타임 DB 연결은 producer·consumer 각자의 .env.local에 동일한 URL을 설정합니다.
변수
POSTGRESQL_URL
| 항목 | 내용 |
|---|---|
| 설명 | PostgreSQL 연결 URL (Prisma 마이그레이션·시드) |
| 예시 (호스트) | postgresql://devuser:devpassword@localhost:5432/devdb |
| 사용처 | server/shared/.../schema.prisma, server/shared/.../seed.ts, PrismaModule(producer·consumer 런타임) |
| 패턴 | 인프라 env POSTGRES_*와 자격 증명 일치 |
MONGODB_URL
| 항목 | 내용 |
|---|---|
| 설명 | MongoDB 연결 URL (Mongoose 시드) |
| 예시 (호스트) | mongodb://devuser:devpassword@localhost:27017/devdb?authSource=admin |
| 사용처 | server/shared/.../seed.ts, MongooseSchemasModule(producer·consumer 런타임) |
| 패턴 | 인프라 env MONGO_*와 자격 증명 일치 |
KAFKA_BROKERS / KAFKA_CLIENT_ID
| 항목 | 내용 |
|---|---|
| 설명 | Kafka 브로커 목록·클라이언트 ID (토픽 생성 CLI) |
| 예시 (호스트) | localhost:9092, mealio-kafka-admin |
| 사용처 | server/shared/src/kafka/create-topics.ts |
| 패턴 | 인프라 env KAFKA_EXTERNAL_HOST·KAFKA_EXTERNAL_PORT와 일치. EC2 호스트 배포 시 published 포트(예: localhost:9092) 사용 |
KAFKA_TOPIC_PARTITIONS, KAFKA_TOPIC_REPLICATION_FACTOR는 선택 값입니다.
사용 명령
pnpm run db:prisma:generate
pnpm run db:prisma:migrate:dev
pnpm run db:prisma:seed # POSTGRESQL_URL
pnpm run db:mongoose:seed # MONGODB_URL
pnpm run db:mongoose:sync-indexes # MONGODB_URL — 스키마 인덱스 동기화
pnpm run db:kafka:create-topics # KAFKA_BROKERS — Kafka 토픽 생성
관측성 (런타임 — producer·consumer env)
shared 패키지가 정의하는 관측 env 검증 규칙은 producer·consumer .env.local에서 사용됩니다.
| 변수 | producer | consumer |
|---|---|---|
METRICS_ENABLED | ✓ (METRICS_PORT 필수) | ✓ (METRICS_PORT 필수) |
SLOW_QUERY_THRESHOLD_MS | ✓ (METRICS_ENABLED=true 시 필수) | ✓ (METRICS_ENABLED=true 시 필수) |
PUSHGATEWAY_URL | — | ✓ (optional, CLI batch push) |
SENTRY_ENABLED | ✓ | ✓ |
SENTRY_DSN_PRODUCER | ✓ | — |
SENTRY_DSN_CONSUMER | — | ✓ |
상세 내용은 producer 환경 변수 · consumer 환경 변수 · Observability 문서를 참고하세요.