戻る

Compose 静的検証

開発ツール

読み込み中

ツールを読み込んでいます

ツールのコードは開いたときにのみ読み込まれます。

このツールの処理はすべてブラウザー内で行われ、入力内容はサーバーへ送信されません。

このツールについて

Compose YAML を 1 文書貼り付けて「YAML を検証」を押すと、限定範囲のローカル検証を行います。固定した公式スキーマに加え、一部のサービス参照、依存関係、ポートを確認します。診断には行、列、独自の名前を隠したパスが付きます。JSON レポートには元の YAML、スカラー値、独自の名前を含めません。入力の編集や言語の変更で前の結果は消えます。スキーマ適合は結果の一部分であり、デプロイの成功を保証しません。

主な用途

  • Compose 設定をレビューする前に、プロパティのつづり間違い、型の誤り、必須項目の不足を見つけます。
  • 自己完結した Compose 文書の未宣言サービス参照、依存関係の循環、明らかなポートの問題を探します。
  • 元の YAML と値をコピーせずに診断レポートを共有します。残る構造や位置も共有前に確認してください。

使い方

  1. 1.Compose YAML 1 文書を貼り付けるか、架空のサンプルを読み込みます。入力欄の機密情報に注意し、表示された解析上限を守ってください。
  2. 2.「YAML を検証」を押し、スキーマと完了状態を確認しながらエラーと警告を読みます。未解決の機能があると検証が未完了になる場合があります。
  3. 3.元の YAML を修正して再検証します。JSON をコピーするか compose-diagnostics.json を保存し、実際の動作は自分の信頼できる Compose 環境で別途確認してください。

静的検証の具体例

宣言済みサービスと静的ポート

services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"
    depends_on:
      - cache
  cache:
    image: redis:7-alpine
{
  "schemaValid": true,
  "complete": true,
  "codes": []
}

要約では schemaValid と complete が true、診断コードが空になります。この架空の web/cache 設定は対応する静的検証を通過します。イメージの取得やコンテナーの起動は行いません。

ポート配列を単一の値で記述

services:
  web:
    image: nginx:alpine
    ports: "8080:80"
{
  "schemaValid": false,
  "complete": true,
  "codes": [
    "schema"
  ]
}

ports にはスキーマが求める構造が必要です。単一の文字列はスキーマ検証に失敗します。診断は値を表示せず、対象フィールドを示します。

未宣言サービスへの参照

services:
  web:
    image: nginx:alpine
    depends_on:
      - missing-service
{
  "schemaValid": true,
  "complete": true,
  "codes": [
    "reference"
  ]
}

YAML はスキーマに適合しますが、宣言されていないサービスを参照しています。reference はエラーなので、schemaValid が true でも成功とみなせません。

未解決の変数を含むイメージ

services:
  web:
    image: "nginx:${TAG}"
{
  "schemaValid": false,
  "complete": false,
  "codes": [
    "interpolation"
  ]
}

イメージに変数式が含まれます。ホストの値で置換したり推測したりせず、interpolation を報告します。complete は false となり、スキーマ適合も確定しません。

検証時のよくある誤り

  • スキーマ適合の表示を動作保証と考える:すべての診断と実行条件を確認してください。
  • ports を配列ではなく単一の値で記述する、またはプロパティを誤記する:行と列でスキーマ診断を確認してください。
  • 文書内にないサービスや資源を参照する:宣言を修正するか、未解決の include/extends ファイルを自分で確認してください。
  • ${VARIABLE} や .env の自動解決を期待する:ホスト環境やファイルは読みません。
  • 診断レポートではなく元の入力を共有する:入力欄には元の値が残り、認証情報を含む場合があります。

制限と注意事項

  • 入力は 100,000 文字、入れ子 64 階層、解析・展開ノード 20,000 個、各マッピング・配列 1,000 項目、エイリアス 100 個、診断 100 件までです。この範囲で YAML アンカーとマージキーに対応します。循環エイリアス、重複キー、独自タグ、複数文書、非対応の非 JSON 値は拒否します。上限に達すると検証は未完了になります。
  • 同梱の公式 Compose Specification スキーマはコミット 914ec15d1fa498969c0df5c1d672306db3256089 に固定し、2026-10-06 に確認しています。JSON Schema 2020-12 を使用します。適合はこのスナップショットに限られ、インストール済み Compose の実装やバージョンが全項目に対応するとは限りません。
  • デフォルト値を含む変数式も未解決のままにします。ホスト環境変数や .env ファイルは読みません。include と extends の読込・結合も行わず、外部ファイルや URL にアクセスしません。これらがあると検証は未完了になり、変数補間がある場合はスキーマ適合も確定しません。
  • 意味上の検証は、一部の宣言済みサービス・資源への参照、依存関係の循環、静的ポートの構文と範囲、ホストポートの重複の可能性に限られます。すべての Compose 規則、profile 選択、プロジェクトの結合、実行時の配置は再現しません。jobs、models、pre-start など新しい意味規則の未対応部分は、実行せずに通知します。 スキーマ適合でも意味上のエラーがある場合があります。イメージの有無、ビルドコンテキスト、ファイルの存在、認証情報、権限、プラットフォーム対応、現在のポート使用状況、デプロイ成功は確認しません。ホストポートの重複は競合の可能性であり、使用中である証拠ではありません。
  • 入力は現在のブラウザータブ内で処理し、アップロードや履歴保存は行いません。元の入力欄は表示されたままです。レポートから元のテキスト、スカラー値、独自の名前を除きますが、既知のフィールド名、位置、問題の種類は残り、完全な匿名化ではありません。クリップボードや保存済みファイルはページから管理できません。

よくある質問

スキーマ適合なら Compose プロジェクトは起動できますか?

いいえ。スキーマの一致は固定したスナップショットに対する構造と型の確認です。別の静的診断で参照やポートの誤りが見つかる場合もあります。イメージ、ファイル、実行権限、ホスト環境は対象外のため、デプロイは別途確認してください。

${VARIABLE}、include、extends はどう扱いますか?

変数式をそのまま残し、未解決として通知します。環境や .env の値は読みません。参照ファイルや拡張サービスも読込・実行しません。不明な設定を補う代わりに、レポートを未完了とします。

診断パスでサービス名が隠されるのはなぜですか?

サービス名、独自のキー、スカラー値には私的情報が含まれる場合があります。レポートには既知のフィールド名と構造上の位置だけを残します。元のフィールドは行と列で探してください。エイリアスの診断はアンカー定義ではなく、それを含むフィールドを指す場合があります。

JSON レポートには元の YAML が入りますか?

入りません。状態フラグ、固定スキーマの参照、翻訳された説明付きの位置診断のみです。元の YAML と値は含めません。ただし設定構造や問題の種類も機密となり得るため、共有前に確認してください。

関連ツール