Base container images for Chaitin MonkeyCode developer workflows.
-
Dockerfile:
docker/base/bookworm/Dockerfile(Debian bookworm-slim, git/curl/build-essential/python3, en_US.UTF-8 locale, default user root). -
Build locally:
STACK=base VERSION=bookworm ./scripts/build.sh -
Push to GHCR:
PUSH=true REGISTRY=ghcr.io/chaitin/monkeycode-runner STACK=base VERSION=bookworm ./scripts/build.sh(needsdocker login ghcr.io). -
Override apt mirrors by setting
DEBIAN_MIRROR/DEBIAN_SECURITY_MIRRORbefore building. -
Example (TUNA mirror in mainland China):
DEBIAN_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/debian \ DEBIAN_SECURITY_MIRROR=https://mirrors.tuna.tsinghua.edu.cn/debian-security \ STACK=base VERSION=bookworm ./scripts/build.sh
-
Run:
docker run --rm -it ghcr.io/chaitin/monkeycode-runner/base:bookworm bash
- Dockerfile:
docker/devbox/bookworm/Dockerfile(extends base image with Go 1.25.6, Node.js 22.22.0 LTS, Python 3.11, and diagnostic tools). - Build locally:
STACK=devbox VERSION=bookworm ./scripts/build.sh - Push to GHCR:
PUSH=true REGISTRY=ghcr.io/chaitin/monkeycode-runner STACK=devbox VERSION=bookworm ./scripts/build.sh - Run:
docker run --rm -it ghcr.io/chaitin/monkeycode-runner/devbox:bookworm bash
- Go 1.25.6: with staticcheck, gofumpt, swag
- Node.js 22.22.0: with Corepack (pnpm, yarn enabled)
- Python 3.11: with pip (PIP_BREAK_SYSTEM_PACKAGES enabled)
- Pre-installed packages: requests, flask, django, beautifulsoup4, scrapy
- Diagnostic tools: htop, iputils-ping, iproute2, wget
# Run the container
docker run --rm -it -v $(pwd):/workspace ghcr.io/chaitin/monkeycode-runner/devbox:bookworm bash
# Inside the container:
go version # Go 1.25.6
node --version # v22.22.0
python3 --version # 3.11.x
npm install # Works with Corepack enabled
python3 -c "import requests; print('requests:', requests.__version__)" # 2.32.5
python3 -c "import flask; print('flask:', flask.__version__)" # 3.1.2
python3 -c "import django; print('django:', django.VERSION)" # (5, 2, 10, 'final', 0)
python3 -c "import scrapy; print('scrapy:', scrapy.__version__)" # 2.14.1- Dockerfile:
docker/frontend/node20/Dockerfile(extends base image with Node.js 20 and Corepack for frontend tooling). - Build locally:
STACK=frontend VERSION=node20 ./scripts/build.sh - Push to GHCR:
PUSH=true REGISTRY=ghcr.io/chaitin/monkeycode-runner STACK=frontend VERSION=node20 ./scripts/build.sh - Run:
docker run --rm -it ghcr.io/chaitin/monkeycode-runner/frontend:node20 node --version
- Dockerfile:
docker/golang/1.25-bookworm/Dockerfile(extends the base image, installs Go 1.25.5 plusstaticcheck,gofumpt,swag,golangci-lint). - Build locally:
STACK=golang VERSION=1.25-bookworm ./scripts/build.sh - Push to GHCR:
PUSH=true REGISTRY=ghcr.io/chaitin/monkeycode-runner STACK=golang VERSION=1.25-bookworm ./scripts/build.sh - Run:
docker run --rm -it ghcr.io/chaitin/monkeycode-runner/golang:1.25-bookworm bash
- Dockerfile:
docker/rust/1.91-bookworm/Dockerfile(extends the base image, installs Rust 1.91.1 via the official tarball with checksum verification). - Build locally:
STACK=rust VERSION=1.91-bookworm ./scripts/build.sh - Push to GHCR:
PUSH=true REGISTRY=ghcr.io/chaitin/monkeycode-runner STACK=rust VERSION=1.91-bookworm ./scripts/build.sh - Run:
docker run --rm -it ghcr.io/chaitin/monkeycode-runner/rust:1.91-bookworm rustc --version
docker/base/bookworm/Dockerfile– base image definition.docker/devbox/bookworm/Dockerfile– all-in-one devbox with Go, Node.js, and Python.docker/frontend/node20/Dockerfile– Node.js frontend developer image.docker/golang/1.25-bookworm/Dockerfile– Go developer image (bookworm + Go 1.25).docker/rust/1.91-bookworm/Dockerfile– Rust developer image (bookworm + Rust 1.91).scripts/build.sh– helper to build/push images (env-driven: STACK, VERSION, REGISTRY, PUSH).docs/– docs placeholder for future stacks and CI notes.
- Workflow:
.github/workflows/ci.yaml- PR: build only (no push).
- Push to
mainbranch: login to GHCR withGITHUB_TOKENand push tags from metadata (bookworm,latest, branch/tag-derived). Non-main branches/tags build only. Target registry:ghcr.io/chaitin/monkeycode-runner.
- No personal access token needed; workflow requests
packages: writeandcontents: readviaGITHUB_TOKEN(ensure Actions permissions allow this if repository is restricted).