53 lines
1.1 KiB
Docker
53 lines
1.1 KiB
Docker
# ==============================
|
|
# Build stage
|
|
# ==============================
|
|
FROM node:20-alpine AS builder
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy package files and Prisma schema FIRST
|
|
COPY transcoder/package.json transcoder/tsconfig.json ./
|
|
COPY prisma ./prisma
|
|
|
|
# Set a temporary DATABASE_URL for Prisma schema generation during build
|
|
ENV DATABASE_URL="postgresql://user:password@localhost:5432/dummy"
|
|
|
|
# Install all deps (including dev)
|
|
RUN npm install
|
|
|
|
# Copy source
|
|
COPY transcoder ./
|
|
|
|
# Build TypeScript
|
|
RUN npm run build
|
|
|
|
|
|
# ==============================
|
|
# Runtime stage
|
|
# ==============================
|
|
FROM node:20-alpine
|
|
|
|
# Install FFmpeg
|
|
RUN apk add --no-cache ffmpeg
|
|
|
|
WORKDIR /app
|
|
|
|
# Copy package files
|
|
COPY transcoder/package.json ./
|
|
|
|
# Copy node_modules from builder (includes all dependencies)
|
|
COPY --from=builder /app/node_modules ./node_modules
|
|
|
|
# Copy compiled output
|
|
COPY --from=builder /app/dist ./dist
|
|
|
|
# Copy Prisma schema
|
|
COPY prisma ./prisma
|
|
|
|
# Environment defaults (can be overridden)
|
|
ENV NODE_ENV=production
|
|
ENV UPLOADS_DIR=/uploads
|
|
|
|
# The container runs once and exits
|
|
CMD ["node", "dist/index.js"]
|