For the complete documentation index, see llms.txt. This page is also available as Markdown.

Compose スクリプト統合

本ページの内容はデジタルヒューマン株式会社の正式サポート対象外です。参考情報としてご利用ください。

Compose マージ: merge-compose.sh スクリプトは、公式のミニプレム(MiniPrem)の compose ファイルとお客様のカスタムサービスを単一の docker-compose.override.yml に統合し、カスタマイズ内容をアップデートに対して安全に保ちます。

概要

merge-compose.sh スクリプトは、公式の MiniPrem Docker Compose ファイルとユーザー定義のカスタムサービスをインテリジェントにマージします。これにより、公式の compose ファイルを更新可能な状態に保ちつつ、追加サービスで MiniPrem を拡張できます。

クイックスタート

1. カスタム compose ファイルを作成する

cd /Users/tyler/Software_Development/miniprem-2025/docker
cp docker-compose.custom.yml.example docker-compose.custom.yml
# Edit docker-compose.custom.yml with your custom services

2. マージスクリプトを実行する

./scripts/merge-compose.sh

これにより、Docker Compose が自動的に利用する docker-compose.override.yml が生成されます。

3. サービスを起動する

# Docker Compose automatically merges docker-compose.yml + docker-compose.override.yml
docker-compose up -d

# Or explicitly specify both files
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d

スクリプトの機能

インテリジェントなマージ

  • サービス: カスタムサービスを公式サービスに追記します

  • ボリューム: ボリューム定義をマージします(重複なし)

  • ネットワーク: ネットワーク定義をマージします

  • 環境変数: カスタム環境変数で公式の値を上書きできます(サービス定義内)

競合検出

スクリプトは、カスタムサービスが公式サービスと同じ名前である場合を検出し、複数の解決戦略を提供します。

検証

  • マージ前後の YAML 構文検証

  • Docker Compose の設定検証(有効な compose ファイルであることを保証)

  • 問題がある場合は明確なエラーメッセージを表示

メタデータ

生成された override ファイルには、有用なコメントが含まれます:

  • マージタイムスタンプ

  • ソースファイル

  • 競合解決戦略

  • 競合のリスト(存在する場合)

使用例

基本的なマージ(デフォルトの動作)

  • 入力: docker-compose.yml + docker-compose.custom.yml

  • 出力: docker-compose.override.yml

  • 戦略: 同名のサービスがある場合、カスタムサービスが公式サービスを上書き

書き込みせずに競合をチェックする

競合が存在する場合は終了コード 2、競合がなければ 0 を返します。

競合解決戦略の選択

カスタムを優先(デフォルト)

サービス名が競合した場合、カスタム版を保持します。

公式を優先

サービス名が競合した場合、公式版を保持します(カスタムサービスは無視されます)。

カスタムサービスをリネーム

サービス名が競合した場合、指定したプレフィックスでカスタムサービスをリネームします。

例: 両方のファイルに redis サービスがある場合、カスタムは custom-redis になります。

カスタム入出力ファイル

詳細出力

マージ処理に関する詳細なデバッグ情報を表示します。

オプションの組み合わせ

終了コード

  • 0: 成功(競合なし、または競合が解決済み)

  • 1: エラー(検証失敗、依存関係不足、構文エラー)

  • 2: 競合検出(情報、戦略によっては成功する場合もあり)

競合のシナリオ

シナリオ 1: 競合なし(最良のケース)

公式:

カスタム:

結果: マージ後のファイルに 4 つすべてのサービスが含まれます。競合なし。

シナリオ 2: サービス名の競合

公式:

カスタム:

解決オプション:

  1. --prefer-custom(デフォルト): カスタムの Redis 設定を使用

  2. --prefer-official: 公式の Redis 設定を使用

  3. --rename-custom "my-": カスタム設定で my-redis を作成し、公式の redis を保持

シナリオ 3: ボリュームの競合

両方のファイルが同じボリューム名を定義している場合、カスタム定義が優先されます。

公式:

カスタム:

結果: カスタムのボリューム定義が使用されます。

ベストプラクティス

1. 一意のサービス名を使用する

明示的に公式サービスを上書きしたい場合を除き、カスタムサービスに公式サービスと同じ名前を付けることは避けてください。

良い例:

リスクのある例:

2. 依存関係を正しく使用する

カスタムサービスは公式サービスに依存させることができます:

3. カスタムファイルを個別に管理する

docker-compose.custom.yml は公式ファイルとは別にバージョン管理してください。これにより以下が可能になります:

  • カスタマイズを失わずに公式 compose ファイルを更新

  • チーム間でカスタムサービスを共有

  • カスタムサービスの変更を追跡

4. 本番環境にデプロイする前にテストする

マージした設定は必ずテストしてください:

5. カスタムサービスをドキュメント化する

docker-compose.custom.yml に以下を説明するコメントを追加してください:

  • 各サービスの役割

  • なぜそれが必要か

  • 依存関係や設定要件

トラブルシューティング

エラー: 「Missing required tools: yq」

解決方法:

エラー: 「Invalid YAML syntax」

解決方法: カスタム compose ファイルの構文エラーを確認してください:

よくある問題:

  • 不正なインデント(タブではなく 2 スペースを使用)

  • コロンの欠落

  • 特殊文字のクォート漏れ

  • ポートマッピングのクォート漏れ

エラー: 「docker-compose config validation failed」

解決方法: マージ後のファイルに構造上の問題があります。以下を確認してください:

よくある問題:

  • 不正なサービス依存関係

  • サービス間のポート競合

  • 無効なボリュームまたはネットワーク参照

警告: 「Conflicts detected」

解決方法: 競合を確認し、適切な戦略を選択してください:

高度な使用法

複数のカスタムファイルをマージする

条件付きサービス

カスタムファイルで環境変数を使用します:

実行時に制御します:

CI/CD での自動マージ

MiniPrem との統合

デフォルト(Default Install)

MiniPrem のデフォルト docker-compose.yml には以下が含まれます:

  • miniprem-monitor: リアルタイムモニタリングダッシュボード

  • renny: デジタルヒューマンのレンダラー(開発コード:Renny)

フルインストール(Full Install)

docker-compose.full.yml には以下が含まれます:

  • すべてのデフォルトサービス

  • vllm: LLM 推論

  • flowise: ワークフロー自動化

  • redis: メッセージキュー

  • prometheus: メトリクス収集

  • grafana: メトリクス可視化

  • fastwhisper: STT(音声認識)

カスタムサービスの追加

MiniPrem と統合するサービスを追加できます:

ファイルの配置場所

  • スクリプト: /Users/tyler/Software_Development/miniprem-2025/docker/scripts/merge-compose.sh

  • 公式 Compose: /Users/tyler/Software_Development/miniprem-2025/docker/docker-compose.yml

  • 公式フル: /Users/tyler/Software_Development/miniprem-2025/docker/docker-compose.full.yml

  • カスタムテンプレート: /Users/tyler/Software_Development/miniprem-2025/docker/docker-compose.custom.yml.example

  • お客様のカスタムファイル: /Users/tyler/Software_Development/miniprem-2025/docker/docker-compose.custom.yml

  • 生成された Override: /Users/tyler/Software_Development/miniprem-2025/docker/docker-compose.override.yml

セキュリティに関する考慮事項

デフォルトのセキュリティ設定

スクリプトは公式サービスのセキュリティ設定を保持します:

  • security_opt: no-new-privileges:true

  • read_only: true(適用可能な場合)

  • ロギングの上限

  • ヘルスチェック

カスタムサービスのセキュリティ

カスタムサービスには必ずセキュリティ設定を含めてください:

シークレット管理

compose ファイルにシークレットをハードコードしないでください:

悪い例:

良い例:

そのうえで .env ファイルや環境変数を使用してください。

ヘルプの取得

コントリビュート

バグを見つけた、または機能リクエストがありますか?マージスクリプトは MiniPrem プロジェクトの一部です。Issue の報告や改善のコントリビュートをお願いします。

ライセンス

MiniPrem プロジェクトの一部です。詳細はプロジェクトのライセンスを参照してください。

最終更新