FROM node:24-bookworm-slim AS base ENV NEXT_TELEMETRY_DISABLED=1 WORKDIR /app RUN apt-get update \ && apt-get install -y --no-install-recommends ffmpeg ca-certificates \ && rm -rf /var/lib/apt/lists/* FROM base AS dependencies COPY package.json package-lock.json ./ RUN npm ci FROM dependencies AS build COPY . . RUN npm run typecheck && npm test && npm run build && npm run test:smoke FROM build AS integration USER node CMD ["npm", "run", "test:integration"] FROM base AS runtime ENV NODE_ENV=production HOSTNAME=0.0.0.0 PORT=3000 \ FFMPEG_PATH=/usr/bin/ffmpeg FFPROBE_PATH=/usr/bin/ffprobe COPY --from=build --chown=node:node /app/.next/standalone/ ./ COPY --from=build --chown=node:node /app/dist/worker.cjs /app/dist/bootstrap.cjs /app/dist/publish-learning-series.cjs ./ COPY --from=build --chown=node:node /app/db/ ./db/ COPY --chown=node:node scripts/container-health.mjs ./ USER node EXPOSE 3000 CMD ["node", "server.js"]