Может ли сам container/src быть томом Docker для OpenCode?
Введение
Эта статья — часть большого руководства
OpenCode в Docker на Ubuntu 24.04.
Руководство показывает, как запускать
OpenCode с флагом
--auto внутри контейнера
Docker.
С --auto агент не спрашивает вас перед каждой
командой, поэтому контейнер ограничивает то, до чего он может достать:
агент работает только в одном git worktree, отдельной
копии проекта.
Агент работает в container/src, докруте сайта.
Эта статья отвечает на частый вопрос: может ли эта папка сама быть томом
контейнера?
Да, из worktree
Да, и здесь именно так и сделано. -v с путём хоста
— это bind mount: сама папка, а не копия.
Важно, какой именно container/src вы монтируете:
| Источник | Что видит агент | Использование |
|---|---|---|
| из worktree | только отслеживаемые файлы | этот |
| из основной копии | отслеживаемые файлы, игнорируемые и ваши незакоммиченные правки | только с масками |
| именованный том | пустая папка; правки остаются внутри Docker | нет |
Нет, из основной копии
В основной копии игнорируемые файлы лежат внутри.
Проверено на тестовом репозитории с фиктивным логом в
container/src/logs:
docker run --rm -v "$PWD/container/src:/work/container/src:ro" --entrypoint sh opencode-agent -c 'ls container/src/logs'
visits.log
Монтирование tmpfs поверх папки скрывает её. Эта команда ничего не печатает:
docker run --rm -v "$PWD/container/src:/work/container/src" --mount type=tmpfs,destination=/work/container/src/logs --entrypoint sh opencode-agent -c 'ls -A container/src/logs'
- Каждому игнорируемому пути нужна своя маска. Их список даёт git status --short --ignored container/src, а лог, который появится завтра под новым именем, не замаскирован.
- Агент правит ваше рабочее дерево. Ветки, которую можно выбросить, нет, и его правки смешиваются с вашими незакоммиченными.
- У worktree нет ни той, ни другой проблемы. Поэтому лаунчер и отказывается от папки с игнорируемыми файлами.
Автор статьи: Клавдия Кондакова