ops: add production compose with DB_SYNC disabled and env template
This commit is contained in:
23
.env.prod.example
Normal file
23
.env.prod.example
Normal 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
90
docker-compose.prod.yml
Normal 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:
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
---
|
---
|
||||||
|
|
||||||
## 6. 部署与运维
|
## 6. 部署与运维
|
||||||
- [ ] `docker-compose.prod.yml`(去掉 `DB_SYNC=true`)
|
- [x] `docker-compose.prod.yml`(去掉 `DB_SYNC=true`)
|
||||||
- [ ] DB migration 机制(TypeORM migration)
|
- [ ] DB migration 机制(TypeORM migration)
|
||||||
- [ ] 结构化日志 + request id
|
- [ ] 结构化日志 + request id
|
||||||
- [ ] 基础监控指标(QPS、延迟、错误率)
|
- [ ] 基础监控指标(QPS、延迟、错误率)
|
||||||
|
|||||||
Reference in New Issue
Block a user