ops: add production compose with DB_SYNC disabled and env template

This commit is contained in:
nav
2026-05-12 12:30:04 +00:00
parent 7cf0c50921
commit 1b568757cb
3 changed files with 114 additions and 1 deletions

23
.env.prod.example Normal file
View File

@@ -0,0 +1,23 @@
# ---------- MySQL Center ----------
MYSQL_CENTER_ROOT_PASSWORD=change-me-center-root
MYSQL_CENTER_DATABASE=fabric_center
MYSQL_CENTER_USER=fabric
MYSQL_CENTER_PASSWORD=change-me-center-db
# ---------- MySQL Guild ----------
MYSQL_GUILD_ROOT_PASSWORD=change-me-guild-root
MYSQL_GUILD_DATABASE=fabric_guild
MYSQL_GUILD_USER=fabric
MYSQL_GUILD_PASSWORD=change-me-guild-db
# ---------- Center secrets ----------
CENTER_SHARED_SECRET=change-me-center-shared-secret
JWT_ACCESS_SECRET=change-me-jwt-access-secret
JWT_REFRESH_SECRET=change-me-jwt-refresh-secret
# ---------- Guild auth ----------
FABRIC_API_KEY=change-me-fabric-api-key
# ---------- Optional webhook ----------
FABRIC_WEBHOOK_URL=
FABRIC_WEBHOOK_SECRET=

90
docker-compose.prod.yml Normal file
View File

@@ -0,0 +1,90 @@
services:
mysql-center:
image: mysql:8.4
container_name: fabric-mysql-center
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_CENTER_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_CENTER_DATABASE:-fabric_center}
MYSQL_USER: ${MYSQL_CENTER_USER:-fabric}
MYSQL_PASSWORD: ${MYSQL_CENTER_PASSWORD}
ports:
- "3307:3306"
volumes:
- mysql_center_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_CENTER_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 12
mysql-guild:
image: mysql:8.4
container_name: fabric-mysql-guild
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_GUILD_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_GUILD_DATABASE:-fabric_guild}
MYSQL_USER: ${MYSQL_GUILD_USER:-fabric}
MYSQL_PASSWORD: ${MYSQL_GUILD_PASSWORD}
ports:
- "3308:3306"
volumes:
- mysql_guild_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p${MYSQL_GUILD_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 12
backend-center:
build:
context: ./Fabric.Backend.Center
dockerfile: Dockerfile
container_name: fabric-backend-center
restart: unless-stopped
depends_on:
mysql-center:
condition: service_healthy
environment:
PORT: 7001
DB_HOST: mysql-center
DB_PORT: 3306
DB_USER: ${MYSQL_CENTER_USER:-fabric}
DB_PASSWORD: ${MYSQL_CENTER_PASSWORD}
DB_NAME: ${MYSQL_CENTER_DATABASE:-fabric_center}
DB_SYNC: "false"
DB_LOGGING: "false"
CENTER_SHARED_SECRET: ${CENTER_SHARED_SECRET}
JWT_ACCESS_SECRET: ${JWT_ACCESS_SECRET}
JWT_REFRESH_SECRET: ${JWT_REFRESH_SECRET}
ports:
- "7001:7001"
backend-guild:
build:
context: ./Fabric.Backend.Guild
dockerfile: Dockerfile
container_name: fabric-backend-guild
restart: unless-stopped
depends_on:
mysql-guild:
condition: service_healthy
environment:
PORT: 7002
DB_HOST: mysql-guild
DB_PORT: 3306
DB_USER: ${MYSQL_GUILD_USER:-fabric}
DB_PASSWORD: ${MYSQL_GUILD_PASSWORD}
DB_NAME: ${MYSQL_GUILD_DATABASE:-fabric_guild}
DB_SYNC: "false"
DB_LOGGING: "false"
FABRIC_API_KEY: ${FABRIC_API_KEY}
FABRIC_WEBHOOK_URL: ${FABRIC_WEBHOOK_URL:-}
FABRIC_WEBHOOK_SECRET: ${FABRIC_WEBHOOK_SECRET:-}
ports:
- "7002:7002"
volumes:
mysql_center_data:
mysql_guild_data:

View File

@@ -93,7 +93,7 @@
---
## 6. 部署与运维
- [ ] `docker-compose.prod.yml`(去掉 `DB_SYNC=true`
- [x] `docker-compose.prod.yml`(去掉 `DB_SYNC=true`
- [ ] DB migration 机制TypeORM migration
- [ ] 结构化日志 + request id
- [ ] 基础监控指标QPS、延迟、错误率