Изолированный запуск OpenCode в Docker c поддержкой правил (rules) и встроенным high-performance MCP-сервером (codebase-memory-mcp) для безопасного локального анализа кода.
OpenCode Docker (Локальный и Изолированный)
Этот репозиторий предоставляет Docker-окружение для запуска OpenCode с веб-интерфейсом в полностью изолированном режиме, с интегрированным MCP-сервером codebase-memory-mcp для индексации кодовых баз.
Особенности сборки
- Полная изоляция: OpenCode запущен внутри контейнера от некорневого пользователя
opencodeс UID/GID1000:1000(соответствует UID большинства пользователей Linux, что решает проблемы с правами на файлы). Он не имеет доступа к вашей хост-системе. - Локальный билд релизов: В
docker-compose.ymlнастроена сборка локальногоDockerfileвместо скачивания готового образа. - Локальный Workspace: Проекты для анализа монтируются исключительно в папку
./workspaceи доступны в контейнере по пути/home/opencode/workspace. Проводник OpenCode открывается сразу в этой папке, скрывая системные файлы контейнера. - Управление правилами (Rules): Инструкции и системные промпты монтируются из папки
./rulesв скрытую директорию/home/opencode/.local/rules/opencode/. - Интеграция с Codebase Memory MCP: В контейнер встроен высокопроизводительный MCP-сервер codebase-memory-mcp для парсинга структуры проектов.
- Доступ к 3D-визуализации графа (socat хак): Интегрирована утилита
socat, пробрасывающая порт визуализации графа наружу на порт4097. Вы можете смотреть граф связей кода вашего проекта прямо в браузере. - Общая база данных: Вы можете настроить монтирование кэша так, чтобы база данных MCP-сервера в контейнере была общей с вашей локальной базой на компьютере.
Структура каталогов проекта
После клонирования репозитория структура каталогов выглядит следующим образом:
.
├── config/ # Файлы конфигурации OpenCode (opencode.json, opencode.jsonc)
├── rules/ # Ваши файлы инструкций (*.md)
├── workspace/ # Папка для кодовых проектов, которые вы анализируете
├── data/ # Системные данные контейнера
│ ├── share/ # auth.json (ключи LLM-провайдеров)
│ ├── state/ # Состояние интерфейса OpenCode
│ └── codebase-memory-mcp/ # Локальный кэш MCP-сервера (если не используется общий)
├── Dockerfile # Конструктор образа
├── docker-compose.yml # Манифест запуска контейнеров
└── .env # Переменные окружения (пароли, таймзона, UID/GID)
Быстрый старт
1. Подготовка окружения
Создайте файл .env на основе примера .env.sample:
cp .env.sample .env
Задайте логин и пароль для входа в веб-интерфейс в созданном .env.
2. Настройка правил (Rules)
В папку ./rules/ уже добавлены файлы базовых правил:
codebase-memory.md— правила использования MCP-сервера в сессии.karpathy.md— общие рекомендации для моделей по минимизации ошибок кодинга.
Эти файлы автоматически подключаются через файл конфигурации ./config/opencode.json (который уже настроен и готов к использованию):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"codebase-memory-mcp": {
"enabled": true,
"type": "local",
"command": ["/usr/local/bin/codebase-memory-mcp"]
}
},
"instructions": [
"/home/opencode/.local/rules/opencode/codebase-memory.md",
"/home/opencode/.local/rules/opencode/karpathy.md"
]
}
[!TIP] Чтобы модель в AI-ассистенте вела себя максимально правильно и эффективно использовала MCP-граф вместо долгого и неэффективного чтения файлов вручную, рекомендуется создать файл
AGENTS.md(или.cursorrules/.clinerules) в корне вашего анализируемого проекта в папкеworkspaceи прописать туда следующее системное указание:## CRITICAL: Tool Restrictions for Code Analysis Even though you know the paths to app/models/, app/repositories/, and app/services/, you are STRICTLY FORBIDDEN from reading them using standard `Read`, `read_file`, or `Glob` tools. - **Mandatory Tool:** To view the contents of any code file, function, class, or method, you MUST use the `codebase-memory-mcp` tool `get_code_snippet`. - **No Brute-Force:** Never use `Read` on source code files to understand logic. Use `get_code_snippet` or structural graph queries instead. - **Exception:** You may only use `Read` for non-code text/config assets (e.g., `.env`, `credentials.json`).
3. Размещение проектов
Поместите проекты, которые хотите проанализировать, в папку ./workspace (например, ./workspace/my-awesome-project).
4. Запуск
Соберите образ и запустите контейнеры:
docker compose up -d --build
- Интерфейс OpenCode будет доступен по адресу:
http://localhost:4096 - 3D-визуализатор графа связей кода будет доступен по адресу:
http://localhost:4097(если включен в вашей конфигурации MCP).
Настройка общей базы данных MCP (Контейнер + Хост)
Чтобы база данных MCP-сервера в контейнере объединилась с базой на вашем основном компьютере, отредактируйте docker-compose.yml:
Замените стандартное монтирование кэша:
# Для Linux/WSL2:
- ~/.cache/codebase-memory-mcp:/home/opencode/.cache/codebase-memory-mcp
Для Windows (PowerShell/CMD):
- C:\Users\<Имя_Пользователя>\AppData\Local\codebase-memory-mcp\cache:/home/opencode/.cache/codebase-memory-mcp
После этого перезапустите контейнеры:
docker compose down && docker compose up -d
Безопасность и Лицензия
Проект распространяется по лицензии MIT. Сборка разработана для обеспечения максимальной локальной безопасности — весь анализ кода, построение абстрактных синтаксических деревьев (AST) через Tree-sitter и сохранение графов происходит исключительно на вашей локальной машине внутри изолированного Docker-контейнера.