xyvera/docker-compose.yml

76 lines
2.2 KiB
YAML
Raw Normal View History

services:
# Nakama game backend
nakama:
image: heroiclabs/nakama:3.22.0
container_name: xyvera_nakama
depends_on:
cockroachdb:
condition: service_healthy
entrypoint:
- "/bin/sh"
- "-ecx"
- >
/nakama/nakama migrate up --database.address root@cockroachdb:26257/nakama &&
/nakama/nakama
--name xyvera
--database.address root@cockroachdb:26257/nakama
--socket.server_key "${NAKAMA_SERVER_KEY:-xyvera-dev-key}"
--session.token_expiry_sec 7200
--runtime.path /nakama/data/modules
--logger.level DEBUG
volumes:
- ./nakama/modules:/nakama/data/modules
- nakama_data:/nakama/data
ports:
- "7349:7349" # client API
- "7350:7350" # gRPC API
- "7351:7351" # console UI
environment:
NAKAMA_SERVER_KEY: "${NAKAMA_SERVER_KEY:-xyvera-dev-key}"
restart: unless-stopped
# CockroachDB — required by Nakama
cockroachdb:
image: cockroachdb/cockroach:v23.2.3
container_name: xyvera_cockroachdb
command: start-single-node --insecure --store=attrs=ssd,path=/var/lib/cockroach/
volumes:
- cockroach_data:/var/lib/cockroach
ports:
- "26257:26257"
- "8080:8080" # CockroachDB admin UI
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/health?ready=1"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
restart: unless-stopped
# PostgreSQL — game content, player state, and economy data
# Separate from Nakama's CockroachDB so schema migrations are clean and
# standalone from the Nakama-managed tables.
postgres:
image: postgres:16-alpine
container_name: xyvera_postgres
environment:
POSTGRES_DB: xyvera
POSTGRES_USER: xyvera
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD:-xyvera-dev-pass}"
volumes:
- postgres_data:/var/lib/postgresql/data
- ./migrations:/docker-entrypoint-initdb.d:ro
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U xyvera -d xyvera"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
volumes:
nakama_data:
cockroach_data:
postgres_data: