● Zion Boggan
repos/Drophawk/frontend/Dockerfile
zionboggan.com ↗
35 lines · text
History for this file →
1
# syntax=docker/dockerfile:1.7
2
# DropHawk frontend - Next.js 16 standalone build.
3
FROM node:20.20.2-bookworm-slim AS base
4
ENV PNPM_HOME=/pnpm
5
ENV PATH=$PNPM_HOME:$PATH
6
RUN corepack enable && corepack prepare pnpm@9.15.9 --activate
7
WORKDIR /app
8
 
9
# --- deps ---
10
FROM base AS deps
11
COPY package.json pnpm-lock.yaml* ./
12
RUN pnpm install --frozen-lockfile || pnpm install
13
 
14
# --- build ---
15
FROM base AS build
16
COPY --from=deps /app/node_modules ./node_modules
17
COPY . .
18
ENV NEXT_TELEMETRY_DISABLED=1
19
RUN pnpm build
20
 
21
# --- runtime ---
22
FROM node:20.20.2-bookworm-slim AS runner
23
WORKDIR /app
24
ENV NODE_ENV=production
25
ENV NEXT_TELEMETRY_DISABLED=1
26
ENV PORT=3000
27
RUN groupadd --system --gid 1001 nodejs && useradd --system --uid 1001 --gid nodejs nextjs
28
COPY --from=build /app/public ./public
29
COPY --from=build --chown=nextjs:nodejs /app/.next/standalone ./
30
COPY --from=build --chown=nextjs:nodejs /app/.next/static ./.next/static
31
USER nextjs
32
EXPOSE 3000
33
HEALTHCHECK --interval=20s --timeout=4s --start-period=20s --retries=3 \
34
  CMD node -e "fetch('http://127.0.0.1:3000/').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
35
CMD ["node", "server.js"]