Replace 2 stale migration files with a single baseline migration capturing the full 40+ model schema. The database was freshly reset via clean-slate, making this the ideal time to establish migration history. Dockerfile now runs prisma migrate deploy before app start. Updated SETUP.md and ROADMAP.md to reference prisma migrate dev instead of db push. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
1.3 KiB
Docker
54 lines
1.3 KiB
Docker
FROM node:22-alpine AS base
|
|
|
|
# FFmpeg for video transcoding (HLS), thumbnail extraction, and metadata
|
|
RUN apk add --no-cache ffmpeg
|
|
|
|
# Install dependencies only when needed
|
|
FROM base AS deps
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json* ./
|
|
RUN npm ci --ignore-scripts
|
|
RUN npx prisma generate || true
|
|
|
|
# Rebuild source code only when needed
|
|
FROM base AS builder
|
|
WORKDIR /app
|
|
COPY --from=deps /app/node_modules ./node_modules
|
|
COPY . .
|
|
|
|
# Generate Prisma client
|
|
RUN npx prisma generate
|
|
|
|
# Build the Next.js app
|
|
RUN npm run build
|
|
|
|
# Production image
|
|
FROM base AS runner
|
|
WORKDIR /app
|
|
|
|
ENV NODE_ENV=production
|
|
|
|
RUN addgroup --system --gid 1001 nodejs
|
|
RUN adduser --system --uid 1001 nextjs
|
|
|
|
COPY --from=builder /app/public ./public
|
|
|
|
# Copy Next.js standalone output
|
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
|
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
|
|
|
# Copy Prisma schema and migrations for runtime
|
|
COPY --from=builder /app/prisma ./prisma
|
|
COPY --from=builder /app/src/generated ./src/generated
|
|
|
|
# Create uploads directory for video/media storage (mounted as volume)
|
|
RUN mkdir -p /data/uploads && chown nextjs:nodejs /data/uploads
|
|
|
|
USER nextjs
|
|
|
|
EXPOSE 3000
|
|
|
|
ENV PORT=3000
|
|
ENV HOSTNAME="0.0.0.0"
|
|
|
|
CMD ["sh", "-c", "npx prisma migrate deploy && node server.js"]
|