feat(infra): 新增生产 Dockerfile 与部署 compose
- api-gateway/Dockerfile: 多阶段构建,golang:1.22-alpine → alpine:3.20,CGO_ENABLED=0 静态编译,非 root 运行 - teacher-portal/Dockerfile: 多阶段构建,node:20-alpine builder → runner,含 HEALTHCHECK - docker-compose.prod.yml: 本地生产编排,3 服务,强制 DEV_MODE=false - docker-compose.deploy.yml: 服务器部署用,镜像来自 Gitea Registry,通过 edu-shared 外部网络连接 MySQL/Redis - deploy.env.example: 部署环境变量模板
This commit is contained in:
38
infra/deploy.env.example
Normal file
38
infra/deploy.env.example
Normal file
@@ -0,0 +1,38 @@
|
||||
# 服务器部署环境变量模板
|
||||
# 使用方式:复制到 /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
|
||||
|
||||
# ============ Kafka(P3 阶段启用,P1 留空)============
|
||||
KAFKA_BROKERS=
|
||||
|
||||
# ============ 可观测性(P6 阶段启用,P1 留空)============
|
||||
OTEL_EXPORTER_OTLP_ENDPOINT=
|
||||
LOG_LEVEL=info
|
||||
|
||||
# ============ 镜像 tag(由 CI 注入,手动部署时可改)============
|
||||
# IMAGE_TAG=latest ← 默认 latest,CI 通过 export IMAGE_TAG 覆盖
|
||||
Reference in New Issue
Block a user