# syntax=docker/dockerfile:1

# Build stage: full source + dev deps, produces .output
# Debian base (not Alpine): ffmpeg-static ships a glibc binary
FROM node:24-slim AS build
WORKDIR /app
COPY . .
RUN npm ci && npm run build

# Runtime stage: only the Nitro output + runtime extras
FROM node:24-slim
WORKDIR /app
ENV NODE_ENV=production \
    HOST=0.0.0.0 \
    NITRO_PORT=3000

COPY --from=build /app/.output ./.output
# Drizzle migrations folder is read relative to cwd at server start
COPY --from=build /app/server/db/migrations ./server/db/migrations
# ffmpeg-static's binary is not picked up by Nitro's dependency tracing
COPY --from=build /app/node_modules/ffmpeg-static /app/node_modules/ffmpeg-static
COPY --from=build /app/node_modules/ffmpeg-static /app/.output/server/node_modules/ffmpeg-static

EXPOSE 3000
CMD ["node", ".output/server/index.mjs"]
