본문으로 건너뛰기

환경 변수

이 문서로 해결할 질문

  • Kafka Consumer에 필요한 환경 변수는 무엇인가요?
  • OpenAI·공공데이터 API 키는 어디서 쓰이나요?
  • producer와 공유하는 DB·Kafka 변수는 어떻게 맞추나요?

개요

Consumer 패키지는 Kafka Consumer와 배치 워커를 실행합니다. 환경 변수 파일은 호스트에서는 server/consumer/.env.local, Docker에서는 server/consumer/.env.docker.local을 사용합니다.

cp server/consumer/.env.example server/consumer/.env.local

부팅 시 server/consumer/.../env.validation.ts의 Joi 스키마로 모든 변수가 필수인지 검증합니다.

METRICS_ENABLED=true이면 METRICS_PORT에서 별도로 /metrics 엔드포인트를 노출합니다.

Docker Compose

DOCKERHUB_USERNAME

항목내용
설명Docker Hub 계정명. Compose image 필드 ${DOCKERHUB_USERNAME}/mealio-consumer:latest 치환에 사용
예시your-dockerhub-username
사용처docker/consumer/compose.yml services.consumer.image
패턴Compose가 image 태그를 해석하거나 Docker Hub에 Push

MEMORY_LIMIT

항목내용
설명consumer 컨테이너 메모리 limit (deploy.resources.limits.memory)
예시1G
사용처docker/consumer/compose.yml

공통

APP_ENV

항목내용
설명배포 환경 식별자
허용값local, development, production, test
사용처@mealio/shared Sentry 초기화, 로그 컨텍스트

데이터·메시징

POSTGRESQL_URL, MONGODB_URL, REDIS_URL, KAFKA_BROKERS, KAFKA_CLIENT_IDproducer 환경 변수동일한 연결 정보를 사용합니다. 호스트/Docker 호스트명만 환경에 맞게 바꿉니다.

변수consumer 전용 차이
KAFKA_CLIENT_ID예: mealio-consumer (producer와 구분)

POSTGRESQL_URL

항목내용
설명Prisma — Recipe·추천·크레딧·pgvector
사용처server/consumer/.../repositories/postgresql/

MONGODB_URL

항목내용
설명EventLog·ChatbotLog·ingestion job 문서
사용처Mongoose 스키마 모듈

REDIS_URL

항목내용
설명Handler 캐시·챗봇 스트림 이벤트 발행
예시 (로컬)redis://:devpassword@localhost:6379
예시 (Compose 앱)redis://:devpassword@redis:6379
사용처@mealio/shared Redis 모듈

KAFKA_BROKERS / KAFKA_CLIENT_ID

항목내용
설명Consumer 구독·내부 Producer(cache-invalidation 등) 브로커 연결
사용처server/consumer/.../integrations/kafka/

OpenAI

OPENAI_API_KEY

항목내용
설명GPT Chat Completions·Embedding·Batch API 인증
사용처server/consumer/.../integrations/openai/

OPENAI_CHAT_MODEL

항목내용
설명챗봇 Function Calling 모델
사용처ProcessChatHandler

OPENAI_EMBEDDING_MODEL

항목내용
설명search_recipes 질의 임베딩 + recipe ingestion persist 시 RecipeEmbedding 업서트
사용처integrations/openai/openai.service.ts, recipe-ingestion-embed-submit/integrations/recipe-embedding-document.integration.ts, recipe-ingestion-embed-retrieve/services/embed-retrieve.service.ts, SearchRecipesHandler

OPENAI_BATCH_MODEL

항목내용
설명recipe ingestion submit 배치 변환
사용처recipe-ingestion-parse-submit job

OpenAI 변수는 챗봇, 레시피 수집, 레시피 임베딩 문서에서 사용처를 확인할 수 있습니다.

공공데이터 (레시피 수집)

PUBLIC_DATA_API_KEY

항목내용
설명식약처 조리식품 레시피 DB API 키
사용처recipe-ingestion-fetch job

관측성

METRICS_ENABLED / METRICS_PORT

항목내용
설명Prometheus /metrics 노출 여부와 포트
패턴METRICS_ENABLED=true일 때 METRICS_PORT 필수 (예: 9101)
사용처server/consumer/.../metrics-exporter.service.ts

SLOW_QUERY_THRESHOLD_MS

항목내용
설명Prisma/Mongoose 슬로우 쿼리 감지 임계값(ms)
예시500
패턴METRICS_ENABLED=true일 때 필수. 양의 정수
사용처@mealio/shared observability.config.ts

PUSHGATEWAY_URL

항목내용
설명recipe-ingestion CLI batch job 종료 시 Prometheus 메트릭 push 대상 (optional)
예시 (호스트 CLI)http://localhost:9091
예시 (Compose 내부)http://pushgateway:9091
사용처server/consumer/.../metrics-push.ts
패턴미설정 시 push skip — CLI job 동작에는 영향 없음. METRICS_ENABLED=true일 때만 push

SENTRY_ENABLED / SENTRY_DSN_CONSUMER

항목내용
설명Consumer 프로세스 Sentry 에러 리포팅
패턴SENTRY_ENABLED=true 이고 DSN이 있을 때만 활성화
사용처@mealio/shared sentry.config.ts

관련 문서