The prod compose file references `build: .`, so add the missing two-stage Dockerfile, run migrations + permission seeding on container start (not only in dev), and add sharp for IPX. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
26 lines
861 B
Docker
26 lines
861 B
Docker
# 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"]
|