Run Open Code Review with Docker Compose
The open-code-review service runs Open Code Review on the directory
in WORKSPACE. compose.sh checks that WORKSPACE is an absolute
path, because Compose would resolve a relative one against this directory, then runs
docker compose here.
- Images
- GHCR
ghcr.io/hambn/open-code-review - Docker Hub
docker.io/hambn/open-code-review
- GHCR
- Use case
- Repeatable local reviews
On this page
Prerequisites
- Docker Engine with the Compose v2 plugin.
- An API key for an LLM provider
ocrsupports, such asANTHROPIC_API_KEY.
Review your changes
The Compose files pass no environment, and ocr keeps its provider settings in
/home/sysadmin/.opencodereview/config.json inside the container, which --rm
removes. Start a shell with your key, then configure and review in it:
export ANTHROPIC_API_KEY=sk-ant-...
WORKSPACE="$PWD" ./compose.sh run --rm -e ANTHROPIC_API_KEY \
--entrypoint zsh open-code-reviewocr config set provider anthropic
ocr config set model <model>
ocr reviewArguments after the service name go to ocr, so
WORKSPACE="$PWD" ./compose.sh run --rm open-code-review --help works without a
provider.
Run without registry access
On a connected machine, run
docker save ghcr.io/hambn/open-code-review:ubuntu-browser -o open-code-review.tar.
On the offline host, load it and use the air-gapped file, which sets
pull_policy: never:
docker load -i open-code-review.tar
WORKSPACE="$PWD" ./compose.sh -f airgapped.docker-compose.yml run --rm \
-e ANTHROPIC_API_KEY --entrypoint zsh open-code-reviewThe review itself still needs network access to your LLM provider.
Variables
| Variable | Required | Purpose |
|---|---|---|
WORKSPACE |
yes | Absolute host path mounted at /workspace. |
OPEN_CODE_REVIEW_IMAGE |
no | Image for both Compose files. Defaults to ghcr.io/hambn/open-code-review:ubuntu-browser; set a digest reference to pin one build. |
Workspace
WORKSPACE is mounted at /workspace and must be a Git repository for ocr review.
ocr runs as UID 1000.
Files
compose.shvalidatesWORKSPACEand passes its arguments todocker compose.docker-compose.ymlruns the published image.airgapped.docker-compose.ymlruns a loaded image and never pulls.
File contents
airgapped.docker-compose.yml12 lines
# Offline: docker load -i open-code-review.tar first, then
# WORKSPACE="$PWD" ./compose.sh -f airgapped.docker-compose.yml run --rm open-code-review
name: open-code-review
services:
open-code-review:
image: ${OPEN_CODE_REVIEW_IMAGE:-ghcr.io/hambn/open-code-review:ubuntu-browser}
pull_policy: never
volumes:
- ${WORKSPACE:?Set WORKSPACE to an absolute host path}:/workspace
stdin_open: true
tty: truecompose.sh18 lines
#!/usr/bin/env bash
# Compose resolves relative paths against this directory, so require an absolute WORKSPACE.
set -euo pipefail
case "${WORKSPACE:-}" in
/*) ;;
"")
echo "Set WORKSPACE to an absolute host path." >&2
exit 2
;;
*)
echo "WORKSPACE must be an absolute host path: $WORKSPACE" >&2
exit 2
;;
esac
cd -- "$(dirname -- "${BASH_SOURCE[0]}")"
exec docker compose "$@"docker-compose.yml10 lines
# WORKSPACE="$PWD" ./compose.sh run --rm open-code-review
name: open-code-review
services:
open-code-review:
image: ${OPEN_CODE_REVIEW_IMAGE:-ghcr.io/hambn/open-code-review:ubuntu-browser}
volumes:
- ${WORKSPACE:?Set WORKSPACE to an absolute host path}:/workspace
stdin_open: true
tty: true