* fix(docker): install ripgrep and python deps for memory tools * docs(handoff): set PR number 107 * docs(project-map): update after dockerfile memory deps changes * fix(docker): install deps in non-shadow paths /opt/memory and global npm * docs(handoff): align with /opt/memory and global npm fix --------- Co-authored-by: opencode-agent <agent@opencode.local>
2.8 KiB
ADR-048: Dockerfile — install ripgrep and python deps for memory tools
Статус
Accepted (2026-07-26)
Контекст
После удаления плагина @mathew-cf/opencode-memory (PR #103, ADR-045) его зависимости больше не ставятся в Docker-контейнер. Memory-инструменты (memory-search.ts, python -m src.memory) теперь живут в самом репо (.opencode/tools/ + src/memory/), но их runtime-deps (@vscode/ripgrep, httpx, numpy, tenacity) не попадали в образ. Результат: memory-search падал на отсутствии binary rg, python -m src.memory — на import httpx. Память в контейнере не работала вообще.
Решение
Добавить в Dockerfile два слоя установки deps после npm install -g opencode-ai repomix:
-
Node runtime deps —
npm install -g @vscode/ripgrep(глобально, в/usr/local/lib/node_modules/). Глобальная установка обходит bind-mount./.opencode:/root/.config/opencodeкоторый shadow'ит локальные node_modules в runtime. -
Python runtime deps —
COPY pyproject.toml uv.lock /opt/memory/+COPY src/ /opt/memory/src/+uv sync --no-dev --frozenв/opt/memory/(вне shadow-пути/root/workspace/).ENV PYTHONPATH=/opt/memory/src+ENV PATH=/opt/memory/.venv/bin:$PATHделаютpython3 -m src.memoryрабочим из любого cwd. Volume./app_data/workspaces:/root/workspaceне shadow'ит/opt/memory/.
Контейнер становится самодостаточным: память работает из коробки после docker compose up -d --build.
Альтернативы
- Вернуть плагин
@mathew-cf/opencode-memory— отвергнуто в PR #103 (плагин удалён, инструменты мигрированы в репо). - Ставить deps через
apt-get—@vscode/ripgrepи Python-пакеты не в Debian repos нужных версий;uv/npmдают детерминизм через lock-файлы. - Копировать весь
.opencode/иsrc/— раздувает образ; достаточно только manifest + lock для установки deps на этапе build. - Deps в
/root/.opencode/+/root/workspace/(первая попытка) — отвергнуто: bind-mount./.opencode:/root/.config/opencodeи volume./app_data/workspaces:/root/workspaceshadow'ят node_modules и.venv/в runtime. Deps установлены но не доступны. Исправлено:/opt/memory/(не shadow) + глобальный npm.