본문으로 건너뛰기

인프라 환경 변수

이 문서로 해결할 질문

  • Docker Compose 인프라용 .env.docker.local에는 어떤 변수가 있나요?
  • 각 변수는 어떤 Compose 파일에서 쓰이나요?
  • 앱 패키지 env와 어떻게 맞춰야 하나요?

개요

루트 .env.docker.local앱 패키지 env와 별도이며, MongoDB·PostgreSQL·Redis·Kafka·Kafka UI·Prometheus·Pushgateway·Grafana Compose 기동에 사용합니다.

cp .env.docker.example .env.docker.local

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

앱 패키지의 DATABASE_URL·MONGODB_URI·REDIS_URL·KAFKA_BROKERS는 이 파일의 계정·호스트·포트와 동일한 접속 정보를 가리키도록 맞춥니다. 변수 준비 절차는 로컬 개발/온보딩 — 환경 변수 준비를 참고하세요.

MongoDB

docker/mongodb/compose.yml에서 root 계정을 설정합니다.

MONGO_ROOT_USERNAME / MONGO_ROOT_PASSWORD

항목내용
설명MongoDB root 사용자·비밀번호
예시devuser / devpassword
Composedocker/mongodb/compose.yml
앱 env 정합MONGODB_URI의 사용자·비밀번호와 일치

PostgreSQL

docker/postgres/compose.yml에서 초기 DB·계정을 설정합니다.

POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB

항목내용
설명PostgreSQL 슈퍼유저·비밀번호·초기 데이터베이스명
예시devuser / devpassword / devdb
Composedocker/postgres/compose.yml
앱 env 정합DATABASE_URL의 user·password·database와 일치

Grafana PostgreSQL view는 prisma migrate deploy로 적용한다 (20260628000000_add_grafana_readonly_views).

Redis

docker/redis/compose.yml에서 비밀번호 인증·호스트 포트를 설정합니다.

REDIS_PASSWORD / REDIS_EXTERNAL_PORT

항목내용
설명Redis requirepass 비밀번호·호스트에서 접속할 때 바인딩 포트
예시devpassword / 6379
Composedocker/redis/compose.yml
앱 env 정합REDIS_URL에 동일 비밀번호 포함 (redis://:devpassword@127.0.0.1:6379)

Kafka

docker/kafka/compose.yml에서 브로커 외부 리스너를 설정합니다.

KAFKA_EXTERNAL_HOST / KAFKA_EXTERNAL_PORT

항목내용
설명호스트에서 Kafka에 접속할 때 사용하는 호스트명·포트
예시localhost / 9092
Composedocker/kafka/compose.yml
앱 env 정합KAFKA_BROKERS{KAFKA_EXTERNAL_HOST}:{KAFKA_EXTERNAL_PORT}와 일치

Kafka UI

개발 전용 UI이며 docker/kafka-ui/compose.yml에서 기동합니다.

KAFKA_UI_PORT / KAFKA_UI_CLUSTER_NAME / KAFKA_UI_BOOTSTRAP_SERVERS

항목내용
설명Kafka UI 호스트 포트·클러스터 표시명·브로커 부트스트랩 주소
예시8080 / mealio / kafka:19092
Composedocker/kafka-ui/compose.yml
패턴KAFKA_UI_BOOTSTRAP_SERVERS는 Docker 네트워크 내부 주소(kafka:19092)를 사용

Prometheus

docker/prometheus/compose.yml에서 스크랩 대상을 host:port 형식으로 지정합니다.

PROMETHEUS_PORT

항목내용
설명Prometheus UI 호스트 바인딩 포트
예시9090
Composedocker/prometheus/compose.yml

PROMETHEUS_PRODUCER_TARGET / PROMETHEUS_CONSUMER_TARGET

항목내용
설명producer·consumer /metrics 스크랩 대상 (host:port)
기본값producer:9100 / consumer:9101
예시 (호스트 개발)host.docker.internal:9100 / host.docker.internal:9101
Composedocker/prometheus/compose.yml
패턴producer·consumer METRICS_PORT와 포트를 맞춥니다. Compose 앱은 서비스명, 호스트 개발은 host.docker.internal을 사용합니다.

PROMETHEUS_PUSHGATEWAY_TARGET

항목내용
설명Prometheus가 Pushgateway를 스크랩할 때 사용하는 대상 (host:port)
기본값pushgateway:9091
예시 (호스트 개발)host.docker.internal:9091
Composedocker/prometheus/compose.yml
패턴PUSHGATEWAY_PORT와 포트를 맞춥니다. Compose 앱은 서비스명, 호스트 개발은 host.docker.internal을 사용합니다.

Pushgateway

docker/pushgateway/compose.yml에서 recipe-ingestion CLI batch job 메트릭 push 수집을 제공합니다.

PUSHGATEWAY_PORT

항목내용
설명Pushgateway 호스트 바인딩 포트 (컨테이너 내부 9091)
예시9091
Composedocker/pushgateway/compose.yml
앱 env 정합Consumer PUSHGATEWAY_URL의 호스트·포트와 일치 (호스트 CLI: http://localhost:9091, Compose 내부: http://pushgateway:9091)

Grafana

docker/grafana/compose.yml에서 대시보드·알림을 설정합니다.

GRAFANA_PORT / GRAFANA_ADMIN_USER / GRAFANA_ADMIN_PASSWORD

항목내용
설명Grafana UI 포트·초기 관리자 계정
예시3030 / admin / admin
Composedocker/grafana/compose.yml

GRAFANA_MONGODB_CONNECTION_SCHEME

항목내용
설명Grafana MongoDB 데이터소스 연결 스킴
허용 값mongodb(표준), mongodb+srv(Atlas 등 DNS seed list)
예시 (로컬)mongodb
예시 (Atlas)mongodb+srv
Composedocker/grafana/compose.yml (미설정 시 mongodb)
패턴GRAFANA_MONGODB_HOST 형식과 쌍으로 맞춤 — mongodbhost:port, mongodb+srv는 호스트명만

GRAFANA_MONGODB_HOST / GRAFANA_MONGODB_USER / GRAFANA_MONGODB_PASSWORD / GRAFANA_MONGODB_DATABASE

항목내용
설명Grafana MongoDB 데이터소스 접속 정보
예시 (로컬)mongodb:27017 / devuser / devpassword / devdb
예시 (Atlas)cluster0.xxxxx.mongodb.net / Atlas 사용자 / 비밀번호 / DB명
Composedocker/grafana/compose.yml
패턴Docker 네트워크 내부 호스트명(mongodb)과 MONGO_*·POSTGRES_* 계정과 일치. Atlas는 GRAFANA_MONGODB_CONNECTION_SCHEME=mongodb+srv와 함께 설정

GRAFANA_POSTGRES_SSL_MODE

항목내용
설명Grafana PostgreSQL 데이터소스 TLS/SSL 모드 (datasources/postgresql.ymljsonData.sslmode)
허용 값disable(기본), require, verify-ca, verify-full
예시 (로컬)disable
예시 (RDS 등 TLS 필수)require 또는 verify-full
Composedocker/grafana/compose.yml (미설정 시 disable)
패턴로컬 Compose PostgreSQL은 SSL 미사용이므로 disable. 관리형 DB는 호스트 정책에 맞춤

GRAFANA_POSTGRES_HOST / GRAFANA_POSTGRES_USER / GRAFANA_POSTGRES_PASSWORD / GRAFANA_POSTGRES_DATABASE

항목내용
설명Grafana PostgreSQL 데이터소스 접속 정보 (도메인 SSOT 스냅샷)
예시postgres:5432 / devuser / devpassword / devdb
Composedocker/grafana/compose.yml
패턴POSTGRES_*·POSTGRESQL_URL과 자격 증명 일치. TLS는 GRAFANA_POSTGRES_SSL_MODE로 별도 설정

SLACK_OPS_WEBHOOK_URL / SLACK_PRODUCT_WEBHOOK_URL

항목내용
설명Grafana 알림용 Slack 웹훅
예시 (비활성)none
Composedocker/grafana/compose.yml
패턴실제 URL이 없으면 none으로 두어 provisioning 오류를 방지

컨테이너 메모리 limit

루트 .env.docker.local*_MEMORY_LIMIT 변수는 Compose deploy.resources.limits.memory에 매핑됩니다. 값은 Docker 단위(512M, 1G 등)를 사용합니다.

변수기본값(예시)Compose
MONGODB_MEMORY_LIMIT768Mdocker/mongodb/compose.yml
POSTGRES_MEMORY_LIMIT1Gdocker/postgres/compose.yml
REDIS_MEMORY_LIMIT256Mdocker/redis/compose.yml
KAFKA_MEMORY_LIMIT768Mdocker/kafka/compose.yml
KAFKA_UI_MEMORY_LIMIT512Mdocker/kafka-ui/compose.yml
PROMETHEUS_MEMORY_LIMIT512Mdocker/prometheus/compose.yml
PUSHGATEWAY_MEMORY_LIMIT128Mdocker/pushgateway/compose.yml
GRAFANA_MEMORY_LIMIT512Mdocker/grafana/compose.yml

앱 컨테이너 limit은 각 패키지 .env.docker.local에서 관리합니다.

변수패키지 env기본값(예시)Compose
MEMORY_LIMITserver/producer/.env.docker.local768Mdocker/producer/compose.yml
MEMORY_LIMITserver/consumer/.env.docker.local1Gdocker/consumer/compose.yml
MEMORY_LIMITclient/.env.docker.local512Mdocker/client/compose.yml

관련 문서