スキル: ローカル OCI レジストリ
目的
開発用にローカル OCI レジストリを起動および管理します。これにより、外部のレジストリにアクセスすることなく、ローカルでキットをビルドおよび公開できます。
使用すべき状況
- バリアントで使用する必要があるキットの変更を開発している場合
- 本番レジストリに公開する前にキットの変更をテストする場合
- オフラインまたは隔離された環境で作業する場合
前提条件
- Docker がインストールされ、実行中であること
- grove ディレクトリ内で作業していること
手順
レジストリの起動
brdev registry start
これにより、以下の処理が行われます:
localhost:5000でローカル Docker レジストリを起動- 永続化を設定(レジストリデータは再起動後も保持)
- レジストリが正常になるまで待機してから制御を戻す
- ビルドで使用するレジストリ URL を出力
レジストリの状態確認
brdev registry status
実行中であれば終了コード 0、そうでなければ非ゼロを返します。
レジストリ URL の取得
brdev registry url
現在の grove に対して localhost:{port} を出力します。スクリプトでポートをハードコードする代わりにこれを使用してください。
レジストリログの表示
brdev registry logs
リアルタイムでログを追跡するには:
brdev registry logs --follow
レジストリの停止
brdev registry stop
注: これによりレジストリのデータボリュームは保持されます。
レジストリデータのクリーンアップ
brdev registry clean
これにより、コンテナとデータボリュームの両方が削除されます。
設定
brdev は環境変数を使用して設定を行います。フォレストルートに .env ファイルを作成するか、環境変数を設定してください:
# カスタムイメージ (デフォルト: registry:2)
BRDEV_REGISTRY_IMAGE=registry:2.8
注: コンテナ名とボリューム名は、grove 名から自動的に brdev-registry-{grove} および brdev-registry-data-{grove} として生成されます。ポートは grove 名のハッシュから自動的に決定されます(範囲 5001-5999)。
検証
レジストリの起動後:
brdev registry list
次の結果が返されるはずです: {"repositories":[]}
よくある問題
Docker がインストールされていない:
Error: Docker is not installed or not in PATH. Install Docker and ensure it's in your PATH
解決策: Docker をインストールし、PATH に追加してください。
Docker デーモンが実行されていない:
Error: Docker daemon is not running. Start Docker with: sudo systemctl start docker
解決策: Docker デーモンを起動してください。
ポートが既に使用中:
Error: Failed to start container. The port may already be in use
解決策:
- 既存のレジストリを確認:
docker ps | grep registry - 競合するコンテナを停止:
docker stop <container-id> - または
FORESTER_REGISTRY_PORTを使用してカスタムポートを設定
権限が拒否された:
- ユーザーが docker グループに属しているか確認:
groups | grep docker - ユーザーを docker グループに追加:
sudo usermod -aG docker $USER - グループ追加後、シェルを再起動する必要がある場合があります
関連スキル
build-kit-locally- ローカルレジストリを使用してビルド済みキットを公開build-variant-from-local-kits- ローカルレジストリを使用するようにバリアントビルドを設定
関連情報
ローカルレジストリ使用のための設定コマンド:
キットの公開用:
brdev twoliter use-local-publish- ローカルレジストリへの公開用Infra.tomlを作成brdev twoliter use-upstream-publish-Infra.tomlを削除
キットの取得用:
brdev twoliter use-local-deps- ローカルレジストリからの取得用Twoliter.overrideを作成brdev twoliter use-upstream-deps-Twoliter.overrideを削除
両方(便利コマンド):
brdev twoliter use-local- 両方のファイルを作成brdev twoliter use-upstream- 両方のファイルを削除
取得時には、ローカルレジストリから取得したい特定のキットについて、Twoliter.toml で vendor = "local" も設定してください。