Может ли сам 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'

Автор статьи: Клавдия Кондакова