···11-FROM node:20-bullseye-slim AS builder
11+FROM node:24-bullseye-slim AS builder
2233WORKDIR /app
44···17171818RUN npm prune --omit=dev
19192020-FROM node:20-bullseye-slim AS base
2020+FROM node:24-bullseye-slim AS base
21212222WORKDIR /app
2323
···77# Docker's cache will let us skip installs when the dependencies haven't changed.
88# We build on debian because it has fewer dependency issues than Alpine for our
99# native modules, and we don't really care about the larger image size.
1010-FROM node:20-bullseye-slim AS server_base
1010+FROM node:24-bullseye-slim AS server_base
1111WORKDIR /app
12121313ARG NPM_TOKEN
···2727RUN npm run build
28282929# make a shared layer that can be the base for worker and api images.
3030-FROM node:20-bullseye-slim AS backend_base
3030+FROM node:24-bullseye-slim AS backend_base
3131WORKDIR /app
3232RUN apt-get update && apt-get install dumb-init
3333COPY [".npmrc", "./"]
+1-1
README.md
···3434For development on Coop it is recommended to:
35353636- use a machine with 16 GiB RAM or more
3737-- use Node 20 or newer (e.g. with `nvm`)
3737+- use Node 24 (run `nvm install && nvm use` so local matches `.nvmrc`)
38383939and then follow the steps below:
4040
+1-1
client/Dockerfile
···11-FROM node:20-bullseye-slim AS client_base
11+FROM node:24-bullseye-slim AS client_base
22WORKDIR /app
3344# ARG is used to get the release id into the ENV from the command line, and then
+2-2
content-proxy/Dockerfile
···22# Generic content proxy for iframe rendering with safety controls
3344# Stage 1: Build the application
55-FROM node:20-bullseye-slim AS builder
55+FROM node:24-bullseye-slim AS builder
6677WORKDIR /app
88···16161717RUN npm prune --omit=dev
18181919-FROM node:20-bullseye-slim
1919+FROM node:24-bullseye-slim
20202121WORKDIR /app
2222
+2-2
docker-compose.yaml
···8899 # Runs all migrations from scratch, after clearing the database(s).
1010 migrations:
1111- image: node:20
1111+ image: node:24-bullseye-slim
1212 command: bash -c 'set -e
1313 npm i && ( [ "$CI" = "true" ] && npm run db:clean -- --env staging || true )
1414 && for db in api-server-pg scylla clickhouse; do npm run db:create -- --db "$$db" --env staging; npm run db:update -- --db "$$db" --env staging; done'
···3939 condition: service_healthy
40404141 drop_dbs:
4242- image: node:20
4242+ image: node:24-bullseye-slim
4343 command: bash -c 'npm i && npm run db:drop -- --env staging'
4444 working_dir: /src
4545 env_file: ./.env.githubci
+1-1
docs/DEVELOPMENT.md
···55## Prerequisites
6677- **Operating System**: macOS, Linux, or Windows with WSL2
88-- **Node.js 20+** (check `.nvmrc` for exact version, use `nvm install && nvm use`)
88+- **Node.js 24** (use `nvm install && nvm use` so local matches `.nvmrc`)
99- **npm** (included with Node.js)
1010- **Docker and Docker Compose**
1111- **16 GB RAM** or more recommended
···99# - Grant the necessary access to `/autoinstrumentation` directory. `chmod -R go+r /autoinstrumentation`
1010# - For auto-instrumentation by container injection, the Linux command cp is
1111# used and must be availabe in the image.
1212-FROM node:20 AS build
1212+FROM node:24 AS build
13131414WORKDIR /operator-build
1515