# A Vectrum runner in a container: Node.js, Bun, git and the usual build tools.
#
# docker build -f apps/web/Dockerfile.runner -t vectrum-runner . (from the repository root)
# docker run -d -e VECTRUM_URL=https://vectrum.example -e VECTRUM_RUNNER_TOKEN=vrn_… vectrum-runner
#
# Steps run as the unprivileged node user, inside this container only (no Docker socket).
FROM node:24-bookworm
COPY --from=oven/bun:1.4.2 /usr/local/bin/bun /usr/local/bin/bun
RUN ln -s /usr/local/bin/bun /usr/local/bin/bunx \
&& apt-get update && apt-get install -y --no-install-recommends tini && rm -rf /var/lib/apt/lists/*
WORKDIR /runner
COPY --chown=node:node apps/web/public/vectrum-runner.mjs ./
RUN mkdir _work && chown node:node _work
USER node
ENV VECTRUM_WORK_DIR=/runner/_work
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["node", "vectrum-runner.mjs"]