mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-15 20:01:28 +00:00
Bruno CLI Docker Images
Official Docker images for Bruno CLI, enabling container-native API collection runs in CI/CD pipelines and local environments without requiring Node.js or npm on the host.
Image structure
docker/
├── README.md ← you are here
└── images/
├── alpine/
│ ├── Dockerfile ← Alpine Linux variant (smallest, ~141MB)
│ └── README.md
└── debian/
├── Dockerfile ← Debian slim variant (~200MB+, glibc support)
└── README.md
Registries
docker pull usebruno/cli:latest
docker pull ghcr.io/usebruno/cli:latest
Variants
| Variant | Base image | Details |
|---|---|---|
| Alpine (default) | node:22-alpine |
→ Alpine README |
| Debian | node:22-slim |
→ Debian README |
Quick choice
- Use Alpine unless you have a specific reason not to (90% of users)
- Use Debian if you hit SSL/glibc compatibility issues
Tags
| Tag | Example | Variant |
|---|---|---|
latest |
usebruno/cli:latest |
alpine |
<version> |
usebruno/cli:3.3.0 |
alpine |
<major.minor> |
usebruno/cli:3.3 |
alpine |
<major> |
usebruno/cli:3 |
alpine |
<version>-alpine |
usebruno/cli:3.3.0-alpine |
alpine |
<version>-debian |
usebruno/cli:3.3.0-debian |
debian |
debian |
usebruno/cli:debian |
debian |
Step-by-step guide
Step 1 — Pull the image
# latest (alpine by default — smallest, fastest to pull)
docker pull usebruno/cli:latest
# specific version (recommended for production CI)
docker pull usebruno/cli:3.3.0
# major.minor — gets patch updates automatically
docker pull usebruno/cli:3.3
# debian variant
docker pull usebruno/cli:debian
docker pull usebruno/cli:3.3.0-debian
Step 2 — Check it works
docker run --rm usebruno/cli --version
Step 3 — Run your collection
Mount your collection directory to
/brunoand passbruarguments directly after the image name.
Cross-platform note: the examples below use
$(pwd)which works in Bash / Zsh / Git Bash / WSL. On Windows native shells, substitute$(pwd)with:
- PowerShell:
${PWD}- CMD:
%cd%
# collection at your current directory
docker run --rm -v $(pwd):/bruno usebruno/cli run --env staging
# collection in a subfolder
docker run --rm -v $(pwd):/bruno usebruno/cli run ./api-tests --env staging
# single request file
docker run --rm -v $(pwd):/bruno usebruno/cli run ./api-tests/login.bru --env staging
Step 4 — Choose your environment
docker run --rm -v $(pwd):/bruno usebruno/cli run --env local
docker run --rm -v $(pwd):/bruno usebruno/cli run --env staging
docker run --rm -v $(pwd):/bruno usebruno/cli run --env production
Step 5 — Pass variables at runtime
# override a single variable
docker run --rm \
-v $(pwd):/bruno \
usebruno/cli run --env staging --env-var API_KEY=your_key
# override multiple variables
docker run --rm \
-v $(pwd):/bruno \
usebruno/cli run --env staging \
--env-var BASE_URL=https://api.example.com \
--env-var API_KEY=secret123
# load variables from a file
docker run --rm \
-v $(pwd):/bruno \
--env-file .env \
usebruno/cli run --env staging
Step 6 — Save test results
# JSON report
docker run --rm \
-v $(pwd):/bruno \
usebruno/cli run --env staging --output results.json --format json
# JUnit XML report (for CI test reporters)
docker run --rm \
-v $(pwd):/bruno \
usebruno/cli run --env staging --output results.xml --format junit
Step 7 — Stop on first failure
docker run --rm -v $(pwd):/bruno usebruno/cli run --env staging --bail
Step 8 — Pin the right version
# exact version — safest for production, no surprise updates
docker run --rm -v $(pwd):/bruno usebruno/cli:3.3.0 run --env staging
# major.minor — gets patch fixes automatically
docker run --rm -v $(pwd):/bruno usebruno/cli:3.3 run --env staging
# latest — always newest, not recommended for production CI
docker run --rm -v $(pwd):/bruno usebruno/cli:latest run --env staging
Step 9 — Choose alpine or debian
# alpine (default) — use this for most cases
docker run --rm -v $(pwd):/bruno usebruno/cli:3.3.0 run --env staging
# debian — use if you hit SSL, glibc, or native module issues
docker run --rm -v $(pwd):/bruno usebruno/cli:3.3.0-debian run --env staging
Usage by variant
Alpine variant
See Alpine README for:
- Building the Alpine image
- When to use Alpine
- Variant-specific options
Debian variant
See Debian README for:
- Building the Debian image
- When to use Debian
- Compatibility notes
CI/CD integration
GitHub Actions
jobs:
api-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Bruno collection
run: |
docker run --rm \
-v ${{ github.workspace }}:/bruno \
usebruno/cli:3.3 run --env staging --output results.xml --format junit
- name: Publish Test Report
uses: dorny/test-reporter@v3
if: always()
with:
name: Bruno Test Results
path: results.xml
reporter: java-junit
GitLab CI
api-tests:
image: usebruno/cli:3.3
script:
- bru run --env staging --output results.xml --format junit
artifacts:
reports:
junit: results.xml
Image details
All variants include:
- Entrypoint:
bru - Working directory:
/bruno - User:
node(UID 1000, non-root) - Architectures:
linux/amd64,linux/arm64
All version × variant combinations
| Alpine | Debian | |
|---|---|---|
latest |
usebruno/cli:latest |
usebruno/cli:debian |
3 |
usebruno/cli:3 |
usebruno/cli:3-debian |
3.3 |
usebruno/cli:3.3 |
usebruno/cli:3.3-debian |
3.3.0 |
usebruno/cli:3.3.0 |
usebruno/cli:3.3.0-debian |
3.2.0 |
usebruno/cli:3.2.0 |
usebruno/cli:3.2.0-debian |