Initial clean state

This commit is contained in:
RandyJC
2025-12-09 08:55:01 +01:00
commit 497dd2ea4c
115 changed files with 12391 additions and 0 deletions

73
Dockerfile Normal file
View File

@@ -0,0 +1,73 @@
FROM node:22-alpine AS base
# Enable and prepare pnpm via Corepack
RUN corepack enable && corepack prepare pnpm@latest --activate
# ----- DEPENDENCIES -----
FROM base AS deps
WORKDIR /app
# Copy pnpm configuration files
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
COPY packages/web/package.json ./packages/web/
COPY packages/socket/package.json ./packages/socket/
# Install only production dependencies
RUN pnpm install --frozen-lockfile --prod
# ----- BUILDER -----
FROM base AS builder
WORKDIR /app
# Copy all monorepo files
COPY . .
# Install all dependencies (including dev) for build
RUN pnpm install --frozen-lockfile
# Build Next.js app with standalone output for smaller runtime image
WORKDIR /app/packages/web
ENV NEXT_TELEMETRY_DISABLED=1
RUN pnpm build
# Build socket server if needed (TypeScript or similar)
WORKDIR /app/packages/socket
RUN if [ -f "tsconfig.json" ]; then pnpm build; fi
# ----- RUNNER -----
FROM node:22-alpine AS runner
WORKDIR /app
# Create a non-root user for better security
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nodejs
# Enable pnpm in the runtime image
RUN corepack enable && corepack prepare pnpm@latest --activate
# Copy configuration files
COPY pnpm-workspace.yaml package.json ./
# Copy the Next.js standalone build
COPY --from=builder /app/packages/web/.next/standalone ./
COPY --from=builder /app/packages/web/.next/static ./packages/web/.next/static
COPY --from=builder /app/packages/web/public ./packages/web/public
# Copy the socket server build
COPY --from=builder /app/packages/socket/dist ./packages/socket/dist
# Copy the game default config
COPY --from=builder /app/config ./config
# Expose the web and socket ports
EXPOSE 3000 5505
# Environment variables
ENV NODE_ENV=production
ENV CONFIG_PATH=/app/config
# Start both services (Next.js web app + Socket server)
CMD ["sh", "-c", "node packages/web/server.js & node packages/socket/dist/index.cjs"]