Files
Edu/infra/deploy.env.example
SpecialX b745443b6d feat(push-gateway): docker 本地验证通过 + nextstep 上下游依赖文档
- Dockerfile 修复:GOPROXY 国内镜像 + go.mod 路径修正 + 构建目录
- docker-compose.deploy.yml 补全 push-gateway 全部 12 个环境变量
- deploy.env.example 新增 push-gateway 段(INTERNAL_API_TOKEN/WS_ALLOWED_ORIGINS)
- 本地 Docker 验证通过(非 mock):
  - /healthz + /readyz(Redis + Kafka 健康)
  - WebSocket /ws + dev-token 鉴权
  - /internal/push HTTP API 投递 3 类考试事件
  - Kafka → push-gateway → WebSocket 全链路透传
    ExamExtended / ExamForceSubmitted / ExamQuestionReordered
- 新增 docs/nextstep.md:上游依赖(iam/Redis/Kafka)+
  下游依赖(4 portal + msg)+ 事件投递架构图 + 环境变量清单
2026-07-13 17:56:28 +08:00

65 lines
2.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 服务器部署环境变量模板
# 使用方式:复制到 /opt/edu/.env 并填入生产值
# cp infra/deploy.env.example /opt/edu/.env
# vim /opt/edu/.env
#
# 安全警告:
# - 此文件含敏感信息,禁止提交到 Git
# - .gitignore 已忽略 .env
# - 仅 SRE AI 或人类决策者可编辑
# ============ 数据库(服务器已有 MySQL)============
# DATABASE_URL 中的 host 需用容器名(如 edu-mysql)而非 localhost
# 因为应用容器通过 edu-shared 网络访问 MySQL 容器
DATABASE_URL=mysql://edu:changeme@edu-mysql:3306/next_edu_cloud
# ============ Redis(服务器已有 Redis)============
# 同理用容器名
REDIS_URL=redis://edu-redis:6379
# ============ JWT(生产密钥,必须修改)============
# 生成方式:openssl rand -hex 32
JWT_SECRET=CHANGE_ME_TO_STRONG_RANDOM_SECRET
JWT_ISSUER=next-edu-cloud
JWT_AUDIENCE=next-edu-cloud
# ============ 服务端口 ============
API_GATEWAY_PORT=8080
TEACHER_PORTAL_PORT=3000
ADMIN_PORTAL_PORT=4003
# ============ Kafka(P3+ 启用,留空则 Outbox publisher 持续重试)============
KAFKA_BROKERS=
# ============ push-gateway(WebSocket 推送服务)============
# /internal/push 鉴权 token(msg 服务调用时需携带 X-Internal-Token 头)
INTERNAL_API_TOKEN=CHANGE_ME_TO_STRONG_INTERNAL_TOKEN
# WebSocket 允许的 Origin 白名单(逗号分隔)
WS_ALLOWED_ORIGINS=http://localhost:3000,http://localhost:4000,http://localhost:4001,http://localhost:4002,http://localhost:4003
# push-gateway 对外端口
PUSH_GATEWAY_PORT=8081
# ============ 可观测性(P6 启用)============
# OTLP collector 端点,留空则服务跳过 trace 上报
OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4318
LOG_LEVEL=info
# ============ Neo4j(content 服务,留空则降级模式)============
NEO4J_URL=
NEO4J_PASSWORD=
# ============ Elasticsearch(msg 服务,留空则降级模式)============
ES_URL=
# ============ ClickHouse(data-ana 服务,留空则降级模式)============
CLICKHOUSE_HOST=
CLICKHOUSE_PORT=8123
CLICKHOUSE_DATABASE=edu_analytics
CLICKHOUSE_USER=
CLICKHOUSE_PASSWORD=
# ============ LLM 配置(ai 服务,留空则降级模式)============
OPENAI_API_KEY=
OPENAI_BASE_URL=https://api.openai.com/v1
ANTHROPIC_API_KEY=