Files
classroomio/docker/Dockerfile.jobs
T
Ulises Vargas d343319621
Publish Docker Images / Smoke test (api) (push) Canceled after 0s
Publish Docker Images / Smoke test (dashboard) (push) Canceled after 0s
Publish Docker Images / Smoke test (jobs) (push) Canceled after 0s
Publish Docker Images / build-and-push (./docker/Dockerfile.api, api, api) (push) Canceled after 0s
Publish Docker Images / build-and-push (./docker/Dockerfile.dashboard, dashboard, dashboard) (push) Canceled after 0s
Publish Docker Images / build-and-push (./docker/Dockerfile.jobs, jobs, jobs) (push) Canceled after 0s
chore: stagger docker builds to prevent parallel OOM
2026-08-25 10:50:54 -07:00

35 lines
1.2 KiB
Docker

FROM node:24-bookworm-slim
# ffmpeg is needed for media probe / thumbnail / audio-extract / transcode tasks.
RUN apt-get update \
&& apt-get install -y --no-install-recommends ffmpeg ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Keep install non-interactive and deterministic in CI/container contexts.
ENV CI=true
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable && corepack prepare [email protected] --activate
# Fetch deps from the lockfile first (cached unless pnpm-lock.yaml changes); the
# store is baked into this layer and reused by the offline install below. `pnpm
# fetch` populates the store for the whole lockfile, so no hand-maintained package
# list. Mirrors the api/dashboard images.
COPY pnpm-lock.yaml ./
RUN pnpm fetch --store-dir /pnpm/store
COPY . .
RUN pnpm install --offline --frozen-lockfile --ignore-scripts \
--store-dir /pnpm/store --filter @cio/jobs-worker...
RUN find . -name 'tsconfig.tsbuildinfo' -delete
# Build the worker and all its workspace deps in topological order.
RUN sleep 90 && pnpm -r --filter @cio/jobs-worker... build
# Run all worker entrypoints by default. Override CMD to scale media / transcribe
# / maintenance independently.
CMD ["node", "apps/jobs/dist/index.js"]