The ARG was defined but never used in a RUN/ENV command, so Docker ignored value changes and kept using cached COPY layers from the very first build. Adding 'RUN echo' forces cache invalidation.
39 lines
1.2 KiB
Docker
39 lines
1.2 KiB
Docker
FROM node:22-alpine AS base
|
|
RUN corepack enable && corepack prepare pnpm@latest --activate
|
|
WORKDIR /app
|
|
|
|
# --- Install + Build in one stage ---
|
|
FROM base AS builder
|
|
# CACHE_BUST: change this value to force a full rebuild (busts Docker layer cache)
|
|
ARG CACHE_BUST=8
|
|
RUN echo "Cache bust: ${CACHE_BUST}"
|
|
COPY . .
|
|
RUN pnpm install --no-frozen-lockfile
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
|
# NEXT_PUBLIC_* vars are baked into the Next.js build at compile time.
|
|
# Pass them as build args so the same Dockerfile works for any environment.
|
|
ARG NEXT_PUBLIC_SITE_URL=https://myeasycms.de
|
|
ARG NEXT_PUBLIC_SUPABASE_URL=http://localhost:8000
|
|
ARG NEXT_PUBLIC_SUPABASE_PUBLIC_KEY
|
|
ARG NEXT_PUBLIC_DEFAULT_LOCALE=de
|
|
ENV NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL}
|
|
ENV NEXT_PUBLIC_SUPABASE_URL=${NEXT_PUBLIC_SUPABASE_URL}
|
|
ENV NEXT_PUBLIC_SUPABASE_PUBLIC_KEY=${NEXT_PUBLIC_SUPABASE_PUBLIC_KEY}
|
|
ENV NEXT_PUBLIC_DEFAULT_LOCALE=${NEXT_PUBLIC_DEFAULT_LOCALE}
|
|
RUN pnpm --filter web build
|
|
|
|
# --- Run ---
|
|
FROM base AS runner
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
|
COPY --from=builder /app/ ./
|
|
|
|
RUN addgroup --system --gid 1001 nodejs && adduser --system --uid 1001 nextjs
|
|
USER nextjs
|
|
|
|
EXPOSE 3000
|
|
CMD ["pnpm", "--filter", "web", "start"]
|