# Rediaccでリポジトリをデプロイ・管理する方法

リポジトリはRediaccの中核となるデプロイ単位です。各リポジトリは独自のDocker daemonと専用ストレージを持つ隔離された暗号化環境です。このチュートリアルでは、暗号化リポジトリを作成し、コンテナ化されたアプリケーションをデプロイし、実行中のコンテナを検査し、クリーンアップします。完了すると、完全なデプロイライフサイクルを体験したことになります。

## 前提条件

- 設定が初期化された`rdc` CLIがインストール済みであること
- プロビジョニングされたマシン（[チュートリアル: マシンセットアップ](/ja/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は2GBの暗号化ボリュームを作成し、フォーマットし、自動的にマウントします。リポジトリはファイルアップロードの準備が整いました。

### ステップ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
```

マシン上のすべてのリポジトリにわたるすべての実行中のコンテナを、CPUとメモリの使用量を含めて表示します。

### ステップ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`値の使用やディスク容量の解放を検討してください。

**`repo up`中のDockerイメージプルタイムアウト**
大きなイメージは低速な接続でタイムアウトする場合があります。`rdc repo up`で再試行してください, 中断した箇所から再開します。エアギャップ環境では、リポジトリのDocker daemonにイメージを事前にロードしてください。

**「マウント失敗」または「LUKSオープン失敗」**
LUKSパスフレーズは設定から導出されます。リポジトリを作成した同じ設定を使用していることを確認してください。ボリュームが別のプロセスによってすでにマウントされている場合は、先にアンマウントしてください。

## 次のステップ

暗号化リポジトリを作成し、アプリケーションをデプロイし、コンテナを検査し、クリーンアップしました。デプロイを監視するには:

- [サービス](/ja/docs/services), Rediaccfileリファレンス、サービスネットワーキング、自動起動、マルチサービスレイアウト
- [チュートリアル: 監視と診断](/ja/docs/tutorial-monitoring), ヘルスチェック、コンテナ検査、診断
- [ツール](/ja/docs/tools), ターミナル、ファイル同期、VS Code連携