|
| 1 | +# syntax=docker/dockerfile:1 |
| 2 | + |
| 3 | +# Rover is Canine's managed coding-agent sidecar. It is intentionally generic: |
| 4 | +# Canine can exec commands inside it, mount the shared workspace, and layer in |
| 5 | +# agent-specific behavior later without rebuilding the project app image. |
| 6 | + |
| 7 | +FROM docker.io/library/debian:bookworm-slim |
| 8 | + |
| 9 | +ARG DEBIAN_FRONTEND=noninteractive |
| 10 | +ARG NODE_VERSION=22.14.0 |
| 11 | +ARG YARN_VERSION=1.22.22 |
| 12 | +ARG PNPM_VERSION=9.15.4 |
| 13 | +ARG TARGETARCH |
| 14 | + |
| 15 | +ENV LANG=C.UTF-8 \ |
| 16 | + LC_ALL=C.UTF-8 \ |
| 17 | + TERM=xterm-256color \ |
| 18 | + WORKSPACE_DIR=/workspace |
| 19 | + |
| 20 | +RUN apt-get update -qq && \ |
| 21 | + apt-get install --no-install-recommends -y \ |
| 22 | + bash \ |
| 23 | + build-essential \ |
| 24 | + ca-certificates \ |
| 25 | + curl \ |
| 26 | + fd-find \ |
| 27 | + git \ |
| 28 | + git-lfs \ |
| 29 | + jq \ |
| 30 | + less \ |
| 31 | + openssh-client \ |
| 32 | + patch \ |
| 33 | + procps \ |
| 34 | + python3 \ |
| 35 | + python3-pip \ |
| 36 | + ripgrep \ |
| 37 | + ruby-full \ |
| 38 | + shellcheck \ |
| 39 | + software-properties-common \ |
| 40 | + sqlite3 \ |
| 41 | + sudo \ |
| 42 | + tini \ |
| 43 | + unzip \ |
| 44 | + vim-tiny \ |
| 45 | + wget \ |
| 46 | + xz-utils && \ |
| 47 | + ln -sf /usr/bin/fdfind /usr/local/bin/fd && \ |
| 48 | + rm -rf /var/lib/apt/lists /var/cache/apt/archives |
| 49 | + |
| 50 | +RUN arch="$(case "${TARGETARCH:-amd64}" in amd64) echo x64 ;; arm64) echo arm64 ;; *) echo "${TARGETARCH}" ;; esac)" && \ |
| 51 | + curl -fsSL "https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${arch}.tar.xz" \ |
| 52 | + | tar -xJ --strip-components=1 -C /usr/local/ && \ |
| 53 | + npm install -g "yarn@${YARN_VERSION}" "pnpm@${PNPM_VERSION}" && \ |
| 54 | + npm cache clean --force |
| 55 | + |
| 56 | +# Install coding agents |
| 57 | +RUN npm install -g @anthropic-ai/claude-code @openai/codex && \ |
| 58 | + npm cache clean --force |
| 59 | + |
| 60 | +COPY entrypoint.sh /usr/local/bin/rover-entrypoint |
| 61 | +RUN chmod +x /usr/local/bin/rover-entrypoint && \ |
| 62 | + git lfs install --system |
| 63 | + |
| 64 | +WORKDIR /workspace |
| 65 | + |
| 66 | +ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/rover-entrypoint"] |
| 67 | +CMD ["sleep", "infinity"] |
0 commit comments