DevContainer¶
Hive DevContainer --- универсальная среда разработки для Hive-проектов. Подключается как git-субмодуль и содержит всё необходимое: языки, инструменты, hive-cli и Claude Code.
Зачем¶
- Единая среда --- все разработчики работают в одинаковом окружении
- Мультиязычность --- Python, Go, Node.js, .NET, Rust, Java из коробки
- hive-cli из исходников --- автоматически собирается из
repos/hive-api - Claude Code --- AI-ассистент с сохранением контекста между пересборками
Быстрый старт¶
1. Подключить субмодуль¶
git submodule add git@lab.xmonetize.net:infrastructure/hive/hive-devcontainer.git .devcontainer
git commit -m "Add hive devcontainer"
2. Открыть в VS Code¶
++ctrl+shift+p++ > Dev Containers: Reopen in Container
Первая сборка занимает несколько минут (скачивание образов и языковых тулчейнов). Последующие запуски используют кэш.
3. Проверить¶
hive --help # Hive CLI
docker --version # Docker-in-Docker
pack --version # Cloud Native Buildpacks
claude --version # Claude Code
CLI
Можно использовать без VS Code:
Что включено¶
Языки¶
| Язык | Версия | Источник |
|---|---|---|
| Python | 3.12 + uv | devcontainer feature |
| Go | latest | devcontainer feature |
| Node.js | LTS | devcontainer feature |
| .NET | 8.0 | devcontainer feature |
| Rust | latest | devcontainer feature |
| Java | 21 + Maven + Gradle | devcontainer feature |
Инструменты¶
| Инструмент | Версия | Назначение |
|---|---|---|
| hive CLI | из исходников | Сборка и деплой сервисов |
| Docker | docker-in-docker | Сборка контейнерных образов |
| pack | 0.40.1 | Cloud Native Buildpacks |
| kubectl | latest | Управление Kubernetes |
| Helm | latest | Helm-чарты |
| Claude Code | latest | AI-ассистент |
VS Code расширения¶
- Python + Pylance
- Go
- Rust Analyzer
- C# Dev Kit
- Java (Red Hat)
- Kubernetes Tools
- ESLint
- Claude Code
hive-cli¶
Если в проекте есть директория repos/hive-api/, hive-cli автоматически устанавливается из исходников при первом создании контейнера.
hive list # Список сервисов в репозитории
hive build --all # Собрать все сервисы
hive test --all # Протестировать
hive deploy --all # Задеплоить
При обновлении repos/hive-api пересоберите CLI:
Claude Code: персистентность¶
Как это работает¶
~/.claude монтируется как именованный Docker volume:
Примеры:
hive-workspace→ volumehive-claude-hive-workspacemy-project→ volumehive-claude-my-project
Это даёт:
- Персистентность --- данные переживают пересборку контейнера
- Изоляция --- каждый проект получает отдельный volume, контексты не смешиваются
Что сохраняется¶
- Memory (
.claude/projects/*/memory/) - Project settings (
.claude/projects/*/) - Global settings (
.claude/settings.json)
Бэкап и восстановление¶
Для дополнительной защиты используйте бэкапы:
# Создать бэкап
claude-backup
# Backup created: .claude-backups/claude-backup-20260325-120000.tar.gz
# Восстановить из последнего бэкапа
claude-restore
# Восстановить из конкретного файла
claude-restore .claude-backups/claude-backup-20260325-120000.tar.gz
Не забудьте
Добавьте .claude-backups/ в .gitignore вашего проекта, чтобы бэкапы не попали в git.
Хранятся последние 5 бэкапов, старые удаляются автоматически.
Обновление DevContainer¶
git submodule update --remote .devcontainer
git add .devcontainer
git commit -m "Update hive devcontainer"
Затем пересоберите контейнер: ++ctrl+shift+p++ > Dev Containers: Rebuild Container
Данные сохраняются
При пересборке контейнера ~/.claude остаётся на месте благодаря Docker volume.
Структура¶
.devcontainer/
├── devcontainer.json # Конфигурация: features, volumes, extensions
├── Dockerfile # Base image (Ubuntu 24.04) + pack CLI
└── scripts/
├── post-create.sh # Первичная настройка
├── post-start.sh # Проверка при старте
├── claude-backup.sh # Бэкап ~/.claude
└── claude-restore.sh# Восстановление
Кастомизация¶
DevContainer можно расширять через devcontainer features. Добавьте нужные features в devcontainer.json:
{
"features": {
"ghcr.io/devcontainers/features/terraform:1": {},
"ghcr.io/devcontainers/features/aws-cli:1": {}
}
}
Для проектных расширений создайте .devcontainer/devcontainer.local.json (добавьте в .gitignore).