UserDashboard/Dockerfile
Syasya 4c6a1a0cb4
Some checks failed
Build and Deploy / build-and-deploy (push) Has been cancelled
amend env
2025-08-27 17:06:13 +08:00

57 lines
1.5 KiB
Docker

# syntax=docker/dockerfile:1
# ---- Build stage ----
ARG NODE_VERSION=20
FROM node:${NODE_VERSION}-slim AS builder
WORKDIR /app
ENV NEXT_TELEMETRY_DISABLED=1
# Build-time public env hook
ARG NEXT_PUBLIC_FASTAPI_URL\
NEXT_PUBLIC_GOOGLE_DRIVE_FOLDER_ID
ENV NEXT_PUBLIC_FASTAPI_URL=${NEXT_PUBLIC_FASTAPI_URL}\
NEXT_PUBLIC_GOOGLE_DRIVE_FOLDER_ID=${NEXT_PUBLIC_GOOGLE_DRIVE_FOLDER_ID}
# 1) Install deps with caching
COPY package.json package-lock.json* ./
RUN npm ci
# 2) Copy source
COPY . .
# 3) Generate Prisma client (safe no-op if unused)
RUN npx prisma generate || true
# 4) Build Next.js (requires next.config.js => output: 'standalone')
RUN npm run build
# ---- Runtime stage ----
FROM node:${NODE_VERSION}-slim AS runner
WORKDIR /app
ENV NODE_ENV=production \
NEXT_TELEMETRY_DISABLED=1 \
HOSTNAME=0.0.0.0 \
PORT=3005
# Minimal server & assets
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
COPY --from=builder /app/public ./public
COPY --from=builder /app/prisma ./prisma
# Optional (only if Prisma engine errors show up):
# COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
# COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma
USER node
EXPOSE 3005
# (Optional) healthcheck
# HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
# CMD node -e "require('http').get('http://127.0.0.1:'+(process.env.PORT||3005)+'/_next/static/webpack/')"
CMD ["node", "server.js"]