Docker Image
The official image bundles the CLI and the request engine. Nothing else is needed, mount your repository and run.
Two registries are published in lockstep on every release:
ghcr.io/t3rr11/requesto-cliterrii/requesto-cli(Docker Hub)
Tags: latest and the release version (e.g. 1.8.0). Pin a version in pipelines for reproducible builds.
Basic usage
docker run --rm \
-v "$PWD/.requesto:/work/.requesto" \
ghcr.io/t3rr11/requesto-cli:latest \
run --environment staging/workis the working directory and the default place to mount your repository.- You can mount the repo root instead and pass the path:
-v "$PWD:/src" requesto-cli run /src. - The container runs as the non-root
nodeuser. ENTRYPOINTisrequesto, so everything after the image name is CLI arguments.
Passing secrets
Credentials should be injected as environment variables rather than baked into images:
docker run --rm \
-v "$PWD/.requesto:/work/.requesto" \
-e REQUESTO_TOKEN_MY_ENTRA \
-e REQUESTO_VAR_BASEURL \
ghcr.io/t3rr11/requesto-cli:latest run-e VAR (without a value) forwards the variable from the host into the container. See CI Authentication and CLI Reference.
Reports
Mount a reports directory so JUnit output survives the container:
docker run --rm \
-v "$PWD/.requesto:/work/.requesto" \
-v "$PWD/test-results:/reports" \
ghcr.io/t3rr11/requesto-cli:latest \
run --reporter junit:/reports/junit.xmlCaching OAuth tokens across runs
With --persist, tokens acquired during the run are written to .requesto/local/oauth-tokens.json. Mount a cache volume to avoid re-fetching tokens on every run:
docker volume create requesto-cli-cache
docker run --rm \
-v "$PWD/.requesto:/work/.requesto" \
-v requesto-cli-cache:/cache \
-e REQUESTO_OAUTH_SECRET_MY_API \
ghcr.io/t3rr11/requesto-cli:latest \
run --persistBecause --persist writes into the mounted workspace, you can also simply keep .requesto/local/ on a persistent volume in ephemeral workspaces.
Networking
The container reaches your APIs directly, for localhost APIs on the host, use host.docker.internal (Docker Desktop) or run the container on the host network (--network host, Linux). Example:
docker run --rm \
-v "$PWD/.requesto:/work/.requesto" \
ghcr.io/t3rr11/requesto-cli:latest \
run --var "baseUrl=http://host.docker.internal:3000"Image contents
- Node 24 on Alpine, running as a non-root user.
- A single-file bundle of the CLI, the shared request engine and the backend internals it needs. There is no node_modules tree, no dev tooling, and no shell utilities beyond the base image.
- The image contains the request engine, variable substitution, script sandbox and OAuth client. It does not include the Requesto web UI or a server; no ports are exposed.