refactor: 拆分 postgres 为 per-domain 数据库
This commit is contained in:
+200
-31
@@ -1,25 +1,139 @@
|
||||
x-postgres-base: &postgres-base
|
||||
image: postgres:17-bookworm
|
||||
restart: unless-stopped
|
||||
environment: &postgres-env
|
||||
POSTGRES_USER: ${PD_USERNAME}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_DB: ${DB_NAME}
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${PD_USERNAME} -d ${DB_NAME}"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
start_period: 30s
|
||||
retries: 10
|
||||
|
||||
services:
|
||||
# ==================== 基础设施 ====================
|
||||
postgres:
|
||||
image: postgres:17-bookworm
|
||||
container_name: juwan-postgres
|
||||
restart: unless-stopped
|
||||
users-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-users-db
|
||||
environment:
|
||||
POSTGRES_USER: ${PD_USERNAME}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_DB: ${DB_NAME}
|
||||
ports:
|
||||
- "15432:5432"
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: users
|
||||
volumes:
|
||||
- pgdata:/var/lib/postgresql/data
|
||||
- ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
|
||||
- users-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
game-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-game-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: game
|
||||
volumes:
|
||||
- game-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
player-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-player-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: player
|
||||
volumes:
|
||||
- player-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
shop-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-shop-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: shop
|
||||
volumes:
|
||||
- shop-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
order-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-order-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: order
|
||||
volumes:
|
||||
- order-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
wallet-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-wallet-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: wallet
|
||||
volumes:
|
||||
- wallet-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
community-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-community-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: community
|
||||
volumes:
|
||||
- community-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
review-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-review-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: review
|
||||
volumes:
|
||||
- review-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
dispute-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-dispute-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: dispute
|
||||
volumes:
|
||||
- dispute-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
notification-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-notification-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: notification
|
||||
volumes:
|
||||
- notification-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
|
||||
search-db:
|
||||
<<: *postgres-base
|
||||
container_name: juwan-search-db
|
||||
environment:
|
||||
<<: *postgres-env
|
||||
POSTGRES_DOMAIN: search
|
||||
volumes:
|
||||
- search-pgdata:/var/lib/postgresql/data
|
||||
- ./init-domain.sh:/docker-entrypoint-initdb.d/00-init-domain.sh:ro
|
||||
- ../../desc/sql:/docker-entrypoint-initdb.d/sql:ro
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${PD_USERNAME} -d ${DB_NAME}"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
start_period: 30s
|
||||
retries: 10
|
||||
|
||||
redis:
|
||||
image: redis:8-alpine
|
||||
@@ -173,11 +287,13 @@ services:
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: users-db
|
||||
DB_HOST_RO: users-db
|
||||
ADMIN_USERNAME: ${ADMIN_USERNAME}
|
||||
ADMIN_PASSWORD: ${ADMIN_PASSWORD}
|
||||
ADMIN_EMAIL: ${ADMIN_EMAIL}
|
||||
depends_on:
|
||||
postgres:
|
||||
users-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -189,8 +305,11 @@ services:
|
||||
container_name: juwan-user-verifications-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: users-db
|
||||
DB_HOST_RO: users-db
|
||||
depends_on:
|
||||
postgres:
|
||||
users-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -204,8 +323,11 @@ services:
|
||||
container_name: juwan-player-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: player-db
|
||||
DB_HOST_RO: player-db
|
||||
depends_on:
|
||||
postgres:
|
||||
player-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -217,8 +339,11 @@ services:
|
||||
container_name: juwan-game-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: game-db
|
||||
DB_HOST_RO: game-db
|
||||
depends_on:
|
||||
postgres:
|
||||
game-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -230,8 +355,11 @@ services:
|
||||
container_name: juwan-shop-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: shop-db
|
||||
DB_HOST_RO: shop-db
|
||||
depends_on:
|
||||
postgres:
|
||||
shop-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -245,8 +373,11 @@ services:
|
||||
container_name: juwan-order-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: order-db
|
||||
DB_HOST_RO: order-db
|
||||
depends_on:
|
||||
postgres:
|
||||
order-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -258,8 +389,11 @@ services:
|
||||
container_name: juwan-wallet-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: wallet-db
|
||||
DB_HOST_RO: wallet-db
|
||||
depends_on:
|
||||
postgres:
|
||||
wallet-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -271,8 +405,11 @@ services:
|
||||
container_name: juwan-community-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: community-db
|
||||
DB_HOST_RO: community-db
|
||||
depends_on:
|
||||
postgres:
|
||||
community-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -290,8 +427,11 @@ services:
|
||||
container_name: juwan-review-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: review-db
|
||||
DB_HOST_RO: review-db
|
||||
depends_on:
|
||||
postgres:
|
||||
review-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -303,8 +443,11 @@ services:
|
||||
container_name: juwan-dispute-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: dispute-db
|
||||
DB_HOST_RO: dispute-db
|
||||
depends_on:
|
||||
postgres:
|
||||
dispute-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -316,8 +459,11 @@ services:
|
||||
container_name: juwan-notification-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: notification-db
|
||||
DB_HOST_RO: notification-db
|
||||
depends_on:
|
||||
postgres:
|
||||
notification-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -329,8 +475,11 @@ services:
|
||||
container_name: juwan-search-rpc
|
||||
restart: unless-stopped
|
||||
env_file: .env
|
||||
environment:
|
||||
DB_HOST: search-db
|
||||
DB_HOST_RO: search-db
|
||||
depends_on:
|
||||
postgres:
|
||||
search-db:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
@@ -527,8 +676,28 @@ services:
|
||||
condition: service_healthy
|
||||
|
||||
volumes:
|
||||
pgdata:
|
||||
name: juwan-pgdata
|
||||
users-pgdata:
|
||||
name: juwan-users-pgdata
|
||||
game-pgdata:
|
||||
name: juwan-game-pgdata
|
||||
player-pgdata:
|
||||
name: juwan-player-pgdata
|
||||
shop-pgdata:
|
||||
name: juwan-shop-pgdata
|
||||
order-pgdata:
|
||||
name: juwan-order-pgdata
|
||||
wallet-pgdata:
|
||||
name: juwan-wallet-pgdata
|
||||
community-pgdata:
|
||||
name: juwan-community-pgdata
|
||||
review-pgdata:
|
||||
name: juwan-review-pgdata
|
||||
dispute-pgdata:
|
||||
name: juwan-dispute-pgdata
|
||||
notification-pgdata:
|
||||
name: juwan-notification-pgdata
|
||||
search-pgdata:
|
||||
name: juwan-search-pgdata
|
||||
redisdata:
|
||||
name: juwan-redisdata
|
||||
mongodata:
|
||||
|
||||
Reference in New Issue
Block a user