30 lines
947 B
Docker
30 lines
947 B
Docker
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"]
|