Skip to content

Commit dba04e6

Browse files
committed
fix(realtime): compose에 Core 공유 env 주입
1 parent ed7a873 commit dba04e6

4 files changed

Lines changed: 17 additions & 9 deletions

File tree

docker-compose.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ services:
135135
REALTIME_LISTEN_ADDR: :38020
136136
REALTIME_RABBITMQ_URL: amqp://${RABBITMQ_USER:-stackup}:${RABBITMQ_PASSWORD:-stackup}@rabbitmq:38050/
137137
REALTIME_LOG_LEVEL: ${REALTIME_LOG_LEVEL:-info}
138+
REALTIME_JWT_SECRET: ${JWT_SECRET:-}
139+
REALTIME_CORE_BASE_URL: ${CORE_INTERNAL_BASE_URL:-http://backend:38010}
140+
REALTIME_INTERNAL_API_KEY: ${CORE_INTERNAL_API_KEY:-local-development-internal-api-key}
141+
REALTIME_WS_WRITE_TIMEOUT: ${REALTIME_WS_WRITE_TIMEOUT:-10s}
138142
depends_on:
139143
rabbitmq:
140144
condition: service_healthy

realtime/.env.example

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@ REALTIME_QUEUE_NAME=q.realtime.session.notify
55
REALTIME_SSE_PING_INTERVAL=30s
66
REALTIME_SSE_SLOW_CONSUMER_TIMEOUT=5s
77
REALTIME_SSE_BUFFER_SIZE=16
8-
REALTIME_JWT_SECRET=change-me-in-prod
9-
REALTIME_CORE_BASE_URL=http://localhost:38080
10-
REALTIME_INTERNAL_API_KEY=change-me-internal-key
8+
# 아래 3개는 Core 와 공유하는 값. 반드시 Core 와 동일하게 맞출 것.
9+
# - REALTIME_JWT_SECRET == Core JWT_SECRET (stream 토큰 검증 키; 불일치 시 SSE/WS 인증 401)
10+
# - REALTIME_INTERNAL_API_KEY == Core CORE_INTERNAL_API_KEY (WS 답변 프록시; AI 서버도 공유)
11+
# - REALTIME_CORE_BASE_URL == Core 내부 REST 주소 (compose 내부에서는 http://backend:38010)
12+
REALTIME_JWT_SECRET=local-development-jwt-secret-must-be-replaced
13+
REALTIME_CORE_BASE_URL=http://localhost:38010
14+
REALTIME_INTERNAL_API_KEY=local-development-internal-api-key
1115
REALTIME_WS_WRITE_TIMEOUT=10s

realtime/CLAUDE.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,9 +151,9 @@ Heartbeat (proxy keepalive):
151151
| `REALTIME_SSE_PING_INTERVAL` | `30s` | SSE heartbeat 주기 |
152152
| `REALTIME_SSE_SLOW_CONSUMER_TIMEOUT` | `5s` | 구독자 send timeout |
153153
| `REALTIME_SSE_BUFFER_SIZE` | `16` | 구독자별 채널 버퍼 |
154-
| `REALTIME_JWT_SECRET` | `change-me-in-prod` | Stream 토큰 검증 키 소스 (Core `JWT_SECRET`과 동일값. 키 = `SHA-256(secret)`, HS256) |
155-
| `REALTIME_CORE_BASE_URL` | `http://localhost:38080` | Core 내부 REST base URL (WS 답변 프록시) |
156-
| `REALTIME_INTERNAL_API_KEY` | `change-me-internal-key` | Core 내부 API 호출용 `X-Internal-API-Key` |
154+
| `REALTIME_JWT_SECRET` | `local-development-jwt-secret-must-be-replaced` | **Core `JWT_SECRET`과 동일값 필수** (Stream 토큰 검증 키. 키=`SHA-256(secret)`, HS256). 불일치 시 SSE/WS 인증 401 |
155+
| `REALTIME_CORE_BASE_URL` | `http://localhost:38010` | Core 내부 REST base URL (WS 답변 프록시). compose 내부는 `http://backend:38010` |
156+
| `REALTIME_INTERNAL_API_KEY` | `local-development-internal-api-key` | **Core `CORE_INTERNAL_API_KEY`와 동일값 필수** (AI 서버도 공유). `X-Internal-API-Key` |
157157
| `REALTIME_WS_WRITE_TIMEOUT` | `10s` | WS write 타임아웃 |
158158

159159
---

realtime/internal/config/config.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ type Config struct {
1111
RabbitMQURL string `env:"REALTIME_RABBITMQ_URL" envDefault:"amqp://stackup:stackup@localhost:38050/"`
1212
LogLevel string `env:"REALTIME_LOG_LEVEL" envDefault:"info"`
1313
QueueName string `env:"REALTIME_QUEUE_NAME" envDefault:"q.realtime.session.notify"`
14-
JWTSecret string `env:"REALTIME_JWT_SECRET" envDefault:"change-me-in-prod"`
15-
CoreBaseURL string `env:"REALTIME_CORE_BASE_URL" envDefault:"http://localhost:38080"`
16-
InternalApiKey string `env:"REALTIME_INTERNAL_API_KEY" envDefault:"change-me-internal-key"`
14+
JWTSecret string `env:"REALTIME_JWT_SECRET" envDefault:"local-development-jwt-secret-must-be-replaced"`
15+
CoreBaseURL string `env:"REALTIME_CORE_BASE_URL" envDefault:"http://localhost:38010"`
16+
InternalApiKey string `env:"REALTIME_INTERNAL_API_KEY" envDefault:"local-development-internal-api-key"`
1717
WSWriteTimeout time.Duration `env:"REALTIME_WS_WRITE_TIMEOUT" envDefault:"10s"`
1818
SSEPingInterval time.Duration `env:"REALTIME_SSE_PING_INTERVAL" envDefault:"30s"`
1919
SSESlowConsumerTimeout time.Duration `env:"REALTIME_SSE_SLOW_CONSUMER_TIMEOUT" envDefault:"5s"`

0 commit comments

Comments
 (0)