# ============================================================================= # 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 # Install git for GitHub dependencies (nakama-runtime) RUN apk add --no-cache git WORKDIR /app # Copy module files and install dependencies COPY modules/package*.json ./ RUN npm install # 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