rps-royale/docker-compose.yml
Ubuntu 64e8fb6c49 Initial commit: monorepo structure, smart contract, server, and Phaser frontend
Phase 0 foundation:
- Docker Compose with PostgreSQL, Redis, Hardhat node
- RPSArena.sol commit-reveal smart contract with tests
- Node.js + Socket.io server with matchmaking and match state machine
- Next.js + Phaser 3 frontend with Boot, Lobby, Arena, Result scenes
- Nginx Proxy Manager integration planned for jeu.cosmolan.fr

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 02:14:42 +00:00

99 lines
2.4 KiB
YAML

version: "3.9"
services:
rps-db:
image: postgres:17-alpine
container_name: rps-db
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER:-rpsuser}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-rpspass}
POSTGRES_DB: ${POSTGRES_DB:-rpsdb}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-rpsuser} -d ${POSTGRES_DB:-rpsdb}"]
interval: 5s
timeout: 5s
retries: 30
volumes:
- rps-db-data:/var/lib/postgresql/data
ports:
- "127.0.0.1:3052:5432"
networks:
- npm_default
rps-redis:
image: redis:7-alpine
container_name: rps-redis
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 30
ports:
- "127.0.0.1:3053:6379"
networks:
- npm_default
hardhat-node:
build:
context: ./apps/contracts
dockerfile: Dockerfile.node
container_name: hardhat-node
restart: unless-stopped
ports:
- "127.0.0.1:3054:8545"
networks:
- npm_default
rps-server:
build:
context: ./apps/server
dockerfile: Dockerfile
container_name: rps-server
restart: unless-stopped
environment:
NODE_ENV: ${NODE_ENV:-development}
DATABASE_URL: ${DATABASE_URL}
REDIS_URL: ${REDIS_URL}
SERVER_PORT: 3001
CORS_ORIGIN: ${CORS_ORIGIN:-https://jeu.cosmolan.fr}
CONTRACT_ADDRESS: ${CONTRACT_ADDRESS}
HARDHAT_RPC_URL: ${HARDHAT_RPC_URL}
SEPOLIA_RPC_URL: ${SEPOLIA_RPC_URL}
PRIVATE_KEY: ${PRIVATE_KEY}
ports:
- "127.0.0.1:3051:3001"
depends_on:
rps-db:
condition: service_healthy
rps-redis:
condition: service_healthy
networks:
- npm_default
rps-web:
build:
context: ./apps/web
dockerfile: Dockerfile
container_name: rps-web
restart: unless-stopped
environment:
NODE_ENV: ${NODE_ENV:-production}
NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL:-https://api.jeu.cosmolan.fr}
NEXT_PUBLIC_CONTRACT_ADDRESS: ${NEXT_PUBLIC_CONTRACT_ADDRESS}
NEXT_PUBLIC_CHAIN_ID: ${NEXT_PUBLIC_CHAIN_ID:-31337}
NEXT_PUBLIC_HARDHAT_RPC_URL: ${NEXT_PUBLIC_HARDHAT_RPC_URL}
ports:
- "127.0.0.1:3050:3000"
depends_on:
- rps-server
networks:
- npm_default
volumes:
rps-db-data:
networks:
npm_default:
external: true