4efc4e8005
Python 3 has been unconditionally present since the Debian trixie upgrade (e58962a, Apr 13) — python3 3.13 ships as a transitive dependency of the trixie base image. python3-pip (e1029bb) and python3-venv (3a7ec45) were later added to the base layer on Apr 23 so Mason could install Python-based LSPs (ruff, ansible-lint) into venvs on nvim startup. MemPalace's pip install (b9c08c3) just piggybacks on what was already there. In other words, INSTALL_PYTHON=true has been a no-op reinstall of already-installed packages for two weeks before MemPalace existed. The flag is dead weight and the docs that advertise it as meaningful are misleading. Remove it everywhere. Users who want Python tooling should use the pre-installed uv/uvx.
122 lines
4.8 KiB
YAML
122 lines
4.8 KiB
YAML
# opencode-devbox docker-compose
|
|
#
|
|
# Usage:
|
|
# cp .env.example .env # configure your provider and keys
|
|
# docker compose up -d
|
|
# docker compose exec -u developer devbox opencode
|
|
#
|
|
# Or for interactive one-shot:
|
|
# docker compose run --rm devbox
|
|
|
|
# Pin the project name so named volumes survive directory renames.
|
|
# Without this, Docker Compose derives the project name from the
|
|
# directory basename — renaming the dir orphans all existing volumes.
|
|
name: opencode-devbox
|
|
|
|
services:
|
|
devbox:
|
|
image: joakimp/opencode-devbox:latest
|
|
# For multi-agent orchestration, use the omos variant instead:
|
|
# image: joakimp/opencode-devbox:latest-omos
|
|
#
|
|
# To build from source instead of pulling from Docker Hub, uncomment:
|
|
# build:
|
|
# context: .
|
|
# args:
|
|
# INSTALL_GO: "false"
|
|
# INSTALL_OMOS: "false"
|
|
container_name: opencode-devbox
|
|
stdin_open: true
|
|
tty: true
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- TERM=xterm-256color
|
|
- GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN:-}
|
|
- GITEA_ACCESS_TOKEN=${GITEA_ACCESS_TOKEN:-}
|
|
- GITEA_HOST=${GITEA_HOST:-}
|
|
volumes:
|
|
# Host workspace — mount your project here
|
|
- ${WORKSPACE_PATH:-.}:/workspace
|
|
|
|
# SSH keys (read-only) — for git push/pull
|
|
- ${SSH_KEY_PATH:-~/.ssh}:/home/developer/.ssh:ro
|
|
|
|
# Optional: mount opencode config directory (persists config changes across restarts)
|
|
# Includes opencode.json, oh-my-opencode-slim.json, skills, etc.
|
|
# When mounted, OPENCODE_PROVIDER auto-config is skipped if opencode.json exists.
|
|
# - ~/.config/opencode:/home/developer/.config/opencode
|
|
|
|
# Optional: mount opencode agent skills from host
|
|
# - ~/.agents/skills:/home/developer/.agents/skills:ro
|
|
|
|
# Optional: mount neovim config from host (plugins auto-install on first start)
|
|
# - ~/.config/nvim:/home/developer/.config/nvim:ro
|
|
|
|
# Optional: persist opencode data (auth, memory, etc.)
|
|
- devbox-data:/home/developer/.local/share/opencode
|
|
|
|
# Optional: persist opencode TUI settings (theme, toggles, etc.)
|
|
- devbox-state:/home/developer/.local/state/opencode
|
|
|
|
# Persist bash history across container recreations.
|
|
# Without this, ~/.bash_history is lost on 'docker compose up --force-recreate'.
|
|
- devbox-shell-history:/home/developer/.cache/bash
|
|
|
|
# Persist zoxide directory history ('z <fragment>' to jump).
|
|
- devbox-zoxide:/home/developer/.local/share/zoxide
|
|
|
|
# Optional: override baked shell defaults with your host's rc files.
|
|
# The image ships sensible defaults (history tuning, prefix-search on
|
|
# Up/Down arrows, fzf/zoxide integration). Uncomment to use your own:
|
|
#
|
|
# NOTE: Single-file bind-mounts break when editors use atomic save
|
|
# (vim, VS Code, sed -i write a temp file then rename() over the
|
|
# original, creating a new inode the container never sees). This is a
|
|
# kernel limitation, not Docker-specific. If host edits stop appearing
|
|
# in the container, mount the parent directory instead — see the
|
|
# "Shell defaults" section in README.md.
|
|
# - ~/.bash_aliases:/home/developer/.bash_aliases:ro
|
|
# - ~/.inputrc:/home/developer/.inputrc:ro
|
|
|
|
# Optional: persist uv data (Python installs, tool installs)
|
|
# Without this, 'uv python install' must be re-run after container removal.
|
|
- devbox-uv:/home/developer/.local/share/uv
|
|
|
|
# Optional: persist Rust toolchains and cargo data
|
|
# Without this, 'rustup-init' must be re-run after container removal.
|
|
# - devbox-rustup:/home/developer/.rustup
|
|
# - devbox-cargo:/home/developer/.cargo
|
|
|
|
# Optional: persist VS Code server and extensions across container recreations
|
|
# - devbox-vscode:/home/developer/.vscode-server
|
|
|
|
# Persist neovim plugin/Mason data (avoids re-downloading on every recreate)
|
|
- devbox-nvim-data:/home/developer/.local/share/nvim
|
|
|
|
# Optional: persist MemPalace data (conversation memory, knowledge graph,
|
|
# embeddings). Without this, palace data is lost on container recreation.
|
|
# - devbox-palace:/home/developer/.mempalace
|
|
|
|
# Optional: persist ChromaDB embedding model cache (~79 MB, downloaded on
|
|
# first mempalace search). Without this, the model re-downloads on every
|
|
# container recreation. Separate from palace data — model cache is
|
|
# disposable, palace data is precious.
|
|
# - devbox-chroma-cache:/home/developer/.cache/chroma
|
|
|
|
# Optional: AWS credentials/SSO config (not read-only — SSO writes token cache)
|
|
# - ~/.aws:/home/developer/.aws
|
|
|
|
volumes:
|
|
devbox-data:
|
|
devbox-state:
|
|
devbox-shell-history:
|
|
devbox-zoxide:
|
|
devbox-nvim-data:
|
|
devbox-uv:
|
|
# devbox-palace:
|
|
# devbox-chroma-cache:
|
|
# devbox-rustup:
|
|
# devbox-cargo:
|
|
# devbox-vscode:
|