98 lines
3.0 KiB
YAML
98 lines
3.0 KiB
YAML
# 全量服务部署 (后端 + 游戏服 + 数据库)
|
|
# 使用方法: docker-compose -f docker-compose.all.yml up -d
|
|
services:
|
|
# ----------------------------------------------------
|
|
# 1. 业务后端 (Bindbox Game Backend)
|
|
# ----------------------------------------------------
|
|
bindbox-game:
|
|
image: zfc931912343/bindbox-game:v1.12
|
|
container_name: bindbox-game
|
|
restart: always
|
|
ports:
|
|
- "9991:9991"
|
|
volumes:
|
|
- ../bindbox_game/logs:/app/logs
|
|
# - ../bindbox_game/configs:/app/configs # 指向 bindbox_game 目录下的配置
|
|
environment:
|
|
- ACTIVE_ENV=pro
|
|
- TZ=Asia/Shanghai
|
|
networks:
|
|
- bindbox_net
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
# ----------------------------------------------------
|
|
# 2. 游戏数据库 (CockroachDB for Nakama)
|
|
# ----------------------------------------------------
|
|
nakama-db:
|
|
image: cockroachdb/cockroach:latest-v23.1
|
|
container_name: nakama-db
|
|
command: start-single-node --insecure --store=attrs=ssd,path=/var/lib/cockroach/ --cache=.25 --max-sql-memory=.25
|
|
restart: always
|
|
volumes:
|
|
- nakama-db-data:/var/lib/cockroach
|
|
ports:
|
|
- "26257:26257"
|
|
- "8081:8080"
|
|
healthcheck:
|
|
test: [ "CMD", "curl", "-f", "http://localhost:8080/health?ready=1" ]
|
|
interval: 3s
|
|
timeout: 3s
|
|
retries: 5
|
|
environment:
|
|
- TZ=Asia/Shanghai
|
|
networks:
|
|
- bindbox_net
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
# ----------------------------------------------------
|
|
# 3. 游戏服务器 (Nakama)
|
|
# ----------------------------------------------------
|
|
nakama:
|
|
image: zfc931912343/bindbox-saolei:v1.5
|
|
container_name: nakama-server
|
|
environment:
|
|
# 直接使用服务名访问后端
|
|
- MINESWEEPER_BACKEND_URL=http://bindbox-game:9991/api/internal
|
|
- TZ=Asia/Shanghai
|
|
entrypoint:
|
|
- "/bin/sh"
|
|
- "-ecx"
|
|
- "/nakama/nakama migrate up --database.address root@nakama-db:26257 && exec /nakama/nakama --name nakama1 --database.address root@nakama-db:26257 --logger.level DEBUG --session.token_expiry_sec 7200 --metrics.prometheus_port 9100 --runtime.path /nakama/modules --matchmaker.interval_sec 1 --matchmaker.max_intervals 5"
|
|
restart: always
|
|
depends_on:
|
|
nakama-db:
|
|
condition: service_healthy
|
|
bindbox-game:
|
|
condition: service_started
|
|
volumes:
|
|
- nakama-data:/nakama/data
|
|
ports:
|
|
- "7350:7350"
|
|
- "7351:7351"
|
|
- "9100:9100"
|
|
healthcheck:
|
|
test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://bindbox-game:9991/" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- bindbox_net
|
|
logging:
|
|
driver: "json-file"
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
volumes:
|
|
nakama-db-data:
|
|
nakama-data:
|
|
networks:
|
|
bindbox_net:
|
|
name: bindbox_net
|
|
driver: bridge
|