Added .superpowers directory to .gitignore to prevent tracking of specific Pocketbase data. Updated Next.js configuration to enable standalone output for optimized Docker image builds, reducing the need for the full node_modules tree.
56 lines
1.8 KiB
Docker
56 lines
1.8 KiB
Docker
# Client Board — production image for Coolify.
|
|
#
|
|
# This container is the Next.js app ONLY. PocketBase is a separate, already-
|
|
# hosted service (see docs/superpowers memory: "Coolify-only PocketBase") —
|
|
# this Dockerfile does not run or bundle it.
|
|
#
|
|
# NEXT_PUBLIC_APP_URL and NEXT_PUBLIC_PB_URL are inlined into the client
|
|
# JavaScript bundle at BUILD time, not read at container start. Coolify must
|
|
# be told to pass them as build arguments (its "Build Variables" section),
|
|
# not just as runtime environment variables — a value only set at runtime
|
|
# will be missing from the browser bundle entirely.
|
|
|
|
# ---- deps: install once, reused unless package*.json changes ----
|
|
FROM node:22-alpine AS deps
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
|
|
# ---- builder: compile with the build-time public vars baked in ----
|
|
FROM node:22-alpine AS builder
|
|
WORKDIR /app
|
|
COPY --from=deps /app/node_modules ./node_modules
|
|
COPY . .
|
|
|
|
ARG NEXT_PUBLIC_APP_URL
|
|
ARG NEXT_PUBLIC_PB_URL
|
|
ENV NEXT_PUBLIC_APP_URL=$NEXT_PUBLIC_APP_URL
|
|
ENV NEXT_PUBLIC_PB_URL=$NEXT_PUBLIC_PB_URL
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
|
RUN npm run build
|
|
|
|
# ---- runner: the small image Coolify actually deploys ----
|
|
FROM node:22-alpine AS runner
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
# Standalone's server only binds every interface when told to — left at the
|
|
# default it binds localhost-only, which is unreachable from outside the
|
|
# container.
|
|
ENV HOSTNAME=0.0.0.0
|
|
ENV PORT=3000
|
|
|
|
RUN addgroup --system --gid 1001 nodejs \
|
|
&& adduser --system --uid 1001 nextjs
|
|
|
|
COPY --from=builder /app/public ./public
|
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
|
|
|
USER nextjs
|
|
|
|
EXPOSE 3000
|
|
|
|
CMD ["node", "server.js"]
|