4e6a304615
Co-existence on 201: 80=PHP gnuboard5 (default vhost), /react=Next.js (basePath) - Dockerfile takes ARG NEXT_PUBLIC_BASE_PATH, passes to Next build for asset/route prefixing - next.config.mjs reads NEXT_PUBLIC_BASE_PATH at build time - nginx slot-clone vhost: location /react proxies to 3000 unchanged; / and /adm/ go to 8090 - /robots.txt remains nginx-served (all-bot block) Design polish: - Header MegaPanel sub-link: gradient hover + white text + shadow on hover (was hover:bg-brand-50 only) - Top-level mega menu: bigger padding + bold + bottom-bar hover indicator - StatStrip: 8 narrow cards → 4 large cards (sm:grid-cols-4) with 12 size icon, 28px value, blur halo Verify: - scripts/verify-cross.mjs: parallel PHP (admin/clone1234) + React (testlogin/test1234) flow - 50 iterations × 11 checks = 550/550 PASS Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
26 lines
907 B
Docker
26 lines
907 B
Docker
FROM node:20-bookworm-slim AS base
|
|
WORKDIR /app
|
|
RUN apt-get update -qq && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* \
|
|
&& corepack enable && corepack prepare pnpm@9.15.0 --activate
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
|
FROM base AS build
|
|
ARG NEXT_PUBLIC_BASE_PATH=""
|
|
ENV NEXT_PUBLIC_BASE_PATH=$NEXT_PUBLIC_BASE_PATH
|
|
COPY pnpm-lock.yaml pnpm-workspace.yaml package.json tsconfig.base.json ./
|
|
COPY apps/web/package.json apps/web/package.json
|
|
COPY packages/db/package.json packages/db/package.json
|
|
COPY packages/auth/package.json packages/auth/package.json
|
|
COPY packages/themes/package.json packages/themes/package.json
|
|
RUN pnpm install --frozen-lockfile
|
|
COPY apps ./apps
|
|
COPY packages ./packages
|
|
RUN pnpm --filter @slot/web build
|
|
|
|
FROM base AS runner
|
|
ENV NODE_ENV=production PORT=3000
|
|
COPY --from=build /app /app
|
|
WORKDIR /app/apps/web
|
|
EXPOSE 3000
|
|
CMD ["pnpm","start"]
|