# ============================================================================= # Nakama with Custom Chess Modules # ============================================================================= # Two-stage build: # 1. Build TypeScript modules with Node.js # 2. Copy compiled JS to Nakama runtime # ============================================================================= # Stage 1: Build TypeScript modules FROM node:20-alpine AS builder WORKDIR /app # Copy module files COPY modules/package*.json ./ RUN npm ci # Copy source and build COPY modules/tsconfig.json ./ COPY modules/src ./src # Build with esbuild (output to build/index.js) RUN npm run build # Verify build output exists RUN ls -la build/ && test -f build/index.js # Stage 2: Nakama runtime with modules FROM registry.heroiclabs.com/heroiclabs/nakama:3.21.1 # Copy compiled JavaScript modules # Nakama expects modules at /nakama/data/modules/ COPY --from=builder /app/build/index.js /nakama/data/modules/main.js # Copy config file (optional - can also be passed via CLI) COPY config.yml /nakama/data/config.yml