c182ada0dd
Zoxide stores its database at ~/.local/share/zoxide/db.zo. Without a named volume, the 'z <fragment>' jump targets are lost on every 'docker compose up --force-recreate'. Add devbox-zoxide named volume in docker-compose.yml and docker-compose.shared.yml, add ~/.local/share/zoxide to the entrypoint ownership-fix loop per AGENTS.md convention, and update the data-persistence tables in README.md and DOCKER_HUB.md.
104 lines
3.9 KiB
YAML
104 lines
3.9 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_PYTHON: "false"
|
|
# INSTALL_GO: "false"
|
|
# INSTALL_OMOS: "false"
|
|
container_name: opencode-devbox
|
|
stdin_open: true
|
|
tty: true
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
- TERM=xterm-256color
|
|
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
|
|
|
|
# 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-uv:
|
|
# devbox-rustup:
|
|
# devbox-cargo:
|
|
# devbox-vscode:
|