tool-containers
Menu
GitHub (opens in new tab)

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
  • GHCRghcr.io/hambn/open-code-review
  • Docker Hubdocker.io/hambn/open-code-review
Use case
Repeatable local reviews
Upstream
github.com/alibaba/open-code-review (opens in new tab)
Source
tools/ai/open-code-review/docs/docker-compose (opens in new tab)
On this page

Prerequisites

  • Docker Engine with the Compose v2 plugin.
  • An API key for an LLM provider ocr supports, such as ANTHROPIC_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:

Shell
export ANTHROPIC_API_KEY=sk-ant-...
WORKSPACE="$PWD" ./compose.sh run --rm -e ANTHROPIC_API_KEY \
  --entrypoint zsh open-code-review
Shell
ocr config set provider anthropic
ocr config set model <model>
ocr review

Arguments 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:

Shell
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-review

The 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

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: true
compose.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

Topics