beeta/nakama/Dockerfile

40 lines
1.2 KiB
Text
Raw Normal View History

# =============================================================================
# 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