# Как развёртывать и управлять репозиториями с Rediacc

Репозитории, это основная единица развёртывания в Rediacc. Каждый из них представляет собой изолированную зашифрованную среду с собственным Docker daemon и выделенным хранилищем. В этом руководстве вы создадите зашифрованный репозиторий, развернёте контейнерное приложение, проверите работающие контейнеры и выполните очистку. По завершении вы пройдёте полный цикл развёртывания.

## Предварительные требования

- Установленный CLI `rdc` с инициализированной конфигурацией
- Подготовленная машина (см. [Руководство: Настройка машины](/ru/docs/tutorial-setup))
- Простое приложение с `Rediaccfile` и `docker-compose.yml`

## Интерактивная запись

![Руководство: Жизненный цикл репозитория](/assets/tutorials/repos-tutorial.cast)

### Шаг 1: Создание зашифрованного репозитория

Каждый репозиторий получает собственный том хранения с шифрованием LUKS. Укажите машину и размер хранилища.

```bash
rdc repo create --name test-app -m server-1 --size 2G
```

Rediacc создаёт зашифрованный том размером 2 ГБ, форматирует его и автоматически монтирует. Репозиторий готов для загрузки файлов.

### Шаг 2: Список репозиториев

Убедитесь, что новый репозиторий доступен.

```bash
rdc repo list -m server-1
```

Показывает все репозитории на машине с их размером, состоянием монтирования и состоянием шифрования.

### Шаг 3: Проверка пути монтирования

Перед развёртыванием убедитесь, что хранилище репозитория смонтировано и доступно.

```bash
rdc term connect -m server-1 -c "ls -la /mnt/rediacc/mounts/test-app/"
```

Каталог монтирования, это место, где находятся файлы приложения: `Rediaccfile`, `docker-compose.yml` и тома данных.

### Шаг 4: Запуск сервисов

Разверните приложение, смонтировав репозиторий и запустив его Docker-сервисы.

```bash
rdc repo up --name test-app -m server-1 --mount
```

Это монтирует репозиторий (если он ещё не смонтирован), запускает изолированный Docker daemon и запускает сервисы через `up()`.

> **Примечание:** Первое развёртывание занимает больше времени из-за загрузки Docker-образов. Последующие запуски используют кэшированные образы.

### Шаг 5: Просмотр запущенных контейнеров

```bash
rdc machine containers server-1
```

Показывает все запущенные контейнеры во всех репозиториях на машине, включая использование ЦП и памяти.

### Шаг 6: Доступ к терминалу репозитория

Для выполнения команд в изолированной Docker-среде репозитория:

```bash
rdc term connect -m server-1 -r test-app -c "docker ps"
```

Терминальная сессия устанавливает `DOCKER_HOST` на изолированный Docker-сокет репозитория. Любая команда Docker выполняется только для контейнеров этого репозитория.

### Шаг 7: Остановка и очистка

Когда закончите, остановите сервисы, закройте зашифрованный том и при необходимости удалите репозиторий.

```bash
rdc repo down --name test-app -m server-1  # Остановить сервисы
rdc repo unmount --name test-app -m server-1  # Закрыть зашифрованный том
rdc repo delete --name test-app -m server-1  # Удалить репозиторий навсегда
```

`down` останавливает контейнеры и Docker daemon. `unmount` закрывает том LUKS. `delete` безвозвратно удаляет репозиторий и его зашифрованное хранилище.

> **Предупреждение:** `repo delete` необратим. Все данные в репозитории будут уничтожены. При необходимости сначала создайте резервную копию.

## Устранение неполадок

**«Недостаточно места на диске» при создании репозитория**
Зашифрованному тому требуется непрерывное свободное пространство на хосте. Проверьте доступное место с помощью `df -h` на сервере. Рассмотрите меньшее значение `--size` или освободите дисковое пространство.

**Тайм-аут загрузки Docker-образа во время `repo up`**
Большие образы могут превышать время ожидания на медленных соединениях. Повторите попытку с `rdc repo up`, загрузка возобновится с того места, где остановилась. Для изолированных сред предварительно загрузите образы в Docker daemon репозитория.

**«Ошибка монтирования» или «Ошибка открытия LUKS»**
Парольная фраза LUKS выводится из конфигурации. Убедитесь, что вы используете ту же конфигурацию, которой был создан репозиторий. Если том уже смонтирован другим процессом, сначала размонтируйте его.

## Следующие шаги

Вы создали зашифрованный репозиторий, развернули приложение, проверили контейнеры и выполнили очистку. Для мониторинга ваших развёртываний:

- [Сервисы](/ru/docs/services), справочник Rediaccfile, сети сервисов, автозапуск и многосервисные конфигурации
- [Руководство: Мониторинг и диагностика](/ru/docs/tutorial-monitoring), проверки работоспособности, инспекция контейнеров и диагностика
- [Инструменты](/ru/docs/tools), терминал, синхронизация файлов и интеграция с VS Code