# The image behind the Gitea Actions label `feuerwerk-ci`. It is built on the host and kept
# local (the runner has `force_pull: false`), so a change here needs a rebuild:
#
#   DOCKER_BUILDKIT=0 docker build --network git_default -t feuerwerk-ci:latest tools/ci
#
# Both flags are needed on stein2: DNS is dead in Docker's default bridge network, and Buildkit
# cannot join a named network.
FROM node:22-bookworm

# chromium + the Vulkan drivers: the e2e harness starts chromium with --use-angle=vulkan and has
# no software fallback. The render device itself comes from the runner's container.options;
# without it chromium falls back to llvmpipe and gets WebGL 1.0 only.
# xvfb serves the other GPU path, FEUERWERK_BROWSER=wsl (tools/lib/browser.mjs): under WSL2 the
# GPU is /dev/dxg behind Mesa's d3d12 driver, which headless chromium cannot reach, an X11 one can.
# php-cli serves api/index.php, which every tool loads and saves its project through.
# ffmpeg converts uploaded videos (#402), through tools/video-worker.php like the container
# feuerwerk-video on stein2 does.
# The fonts are the host's set on purpose: the checks measure text widths to find click points,
# so a different set moves them.
RUN apt-get update && apt-get install -y --no-install-recommends \
      chromium mesa-vulkan-drivers libvulkan1 \
      xvfb \
      php-cli php-mbstring \
      ffmpeg \
      fonts-dejavu-core fonts-droid-fallback fonts-noto-color-emoji fonts-noto-mono \
      fonts-texgyre fonts-urw-base35 \
 && rm -rf /var/lib/apt/lists/*
