fix: upgrade all Dockerfiles to node:24-alpine, fix portal build errors

- Update all 12 Dockerfiles from node:18/20/22 to node:24-alpine
- Fix caproverforge portal: remove event handlers from Server Component
- Fix repoforge/caproverforge portals: ensure public/ dir exists in builder
- Fix packagerepo Dockerfile: node:18 → node:24 (Next.js 16 requires >=20)
- Fix DBAL frontend port conflict: 3009 → 3015 (3009 in use by external container)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-18 21:43:28 +00:00
parent 7e12140e41
commit 9df6e1c64f
14 changed files with 18 additions and 25 deletions

View File

@@ -756,7 +756,7 @@ services:
container_name: metabuilder-dbal-frontend
restart: unless-stopped
ports:
- "3009:3000"
- "3015:3000"
environment:
NODE_ENV: production
PORT: 3000

View File

@@ -1,4 +1,4 @@
FROM node:20-alpine AS base
FROM node:24-alpine AS base
FROM base AS deps
RUN apk add --no-cache libc6-compat
@@ -10,7 +10,7 @@ FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
RUN mkdir -p public && npm run build
FROM base AS runner
WORKDIR /app

View File

@@ -51,6 +51,8 @@ export default function Home() {
<div style={{ textAlign: "center", marginBottom: 56 }}>
<a
href="https://github.com/nicholasgriffintn/caproverforge/releases/latest"
target="_blank"
rel="noopener noreferrer"
style={{
display: "inline-block",
background: "var(--accent)",
@@ -60,16 +62,7 @@ export default function Home() {
padding: "14px 36px",
borderRadius: 12,
textDecoration: "none",
transition: "background 0.2s",
}}
onMouseOver={(e) =>
((e.currentTarget as HTMLAnchorElement).style.background =
"var(--accent-hover)")
}
onMouseOut={(e) =>
((e.currentTarget as HTMLAnchorElement).style.background =
"var(--accent)")
}
>
Download APK
</a>

View File

@@ -31,7 +31,7 @@ done
RUN cd frontends/dbal && npx next build
# --- Runtime stage ---
FROM node:20-alpine
FROM node:24-alpine
WORKDIR /app
COPY --from=builder /app/frontends/dbal/.next/standalone ./

View File

@@ -1,4 +1,4 @@
FROM node:20-alpine AS base
FROM node:24-alpine AS base
# Install dependencies only when needed
FROM base AS deps

View File

@@ -61,7 +61,7 @@ done
RUN cd frontends/emailclient && npx next build --webpack
# --- Runtime stage ---
FROM node:20-alpine
FROM node:24-alpine
WORKDIR /app
COPY --from=builder /app/frontends/emailclient/.next/standalone ./

View File

@@ -1,6 +1,6 @@
# Multi-stage build (standalone - no monorepo deps)
# Context: monorepo root (..)
FROM node:22-alpine AS deps
FROM node:24-alpine AS deps
WORKDIR /app
COPY frontends/exploded-diagrams/package.json ./frontends/exploded-diagrams/
@@ -17,7 +17,7 @@ COPY frontends/exploded-diagrams/ ./frontends/exploded-diagrams/
RUN cd frontends/exploded-diagrams && npx next build --webpack
# --- Runtime stage ---
FROM node:22-alpine
FROM node:24-alpine
WORKDIR /app
COPY --from=builder /app/frontends/exploded-diagrams/.next/standalone ./

View File

@@ -61,7 +61,7 @@ done
RUN cd frontends/nextjs && npx next build --webpack
# --- Runtime stage ---
FROM node:20-alpine
FROM node:24-alpine
WORKDIR /app
COPY --from=builder /app/frontends/nextjs/.next/standalone ./

View File

@@ -1,4 +1,4 @@
FROM node:18-alpine AS base
FROM node:24-alpine AS base
# Install dependencies only when needed
FROM base AS deps

View File

@@ -61,7 +61,7 @@ done
RUN cd frontends/pastebin && npx next build --webpack
# --- Runtime stage ---
FROM node:20-alpine
FROM node:24-alpine
WORKDIR /app
COPY --from=builder /app/frontends/pastebin/.next/standalone ./

View File

@@ -65,7 +65,7 @@ ENV NODE_OPTIONS="--max-old-space-size=3072"
RUN cd frontends/postgres && npx next build --webpack
# --- Runtime stage ---
FROM node:20-alpine
FROM node:24-alpine
WORKDIR /app
COPY --from=builder /app/frontends/postgres/.next/standalone ./

View File

@@ -1,4 +1,4 @@
FROM node:20-alpine AS base
FROM node:24-alpine AS base
FROM base AS deps
RUN apk add --no-cache libc6-compat
@@ -10,7 +10,7 @@ FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
RUN mkdir -p public && npm run build
FROM base AS runner
WORKDIR /app

View File

@@ -65,7 +65,7 @@ done
RUN cd frontends/workflowui && npx next build --turbopack
# --- Runtime stage ---
FROM node:20-alpine
FROM node:24-alpine
WORKDIR /app
# Install Python for Flask backend

View File

@@ -1,6 +1,6 @@
# Multi-stage build: deps cached separately from source changes
# Context: monorepo root (..)
FROM node:20-alpine AS deps
FROM node:24-alpine AS deps
WORKDIR /app
COPY package.json .npmrc ./