開発者ツール · Docker run から Docker compose コンバーター
YAML Compose ファイルの注意事項: 引用、ノルウェー問題、22:22
· 背景
ドッカー 作成 yaml
Compose ファイルは YAML であり、YAML には裸の値に関する意見があります。この投稿では、最も一般的なサプライズの背後にある解析ルールと、生成または手書きの YAML をチェックする方法について説明します。
COUNTRY=NO が false になりました — Compose ファイルは、アプリが 2 文字のコードを必要とした場所にブール値を渡しました
COUNTRY=NO が false になりました - Compose ファイルは、アプリが 2 文字のコードを必要とする場所にブール値を渡しました。証拠: 単なる NO のような値は、パーサーによって再入力できます。使い捨てリテラルを使用して yaml スカラーの安全性を再現します。各ソース オカレンスを引用符付きの値マップ シーケンスと組み合わせます。宛先レビュー用にパーサーの入力を予約します。
yaml インシデントは、別の yaml インシデントの境界として、8 進数に見える 16 進数の数値と日付の形をした文字列が引用符で囲まれていることも明らかにしています。証拠: 8 進数に見える 16 進数値と日付の形をした文字列が引用符で囲まれています。この yaml スカラー安全制約は停止点です。引用符で囲まれた値を検査し、製造動作を行わずにシーケンスをマップし、パーサー タイピングのホスト チェックを文書化します。
YAML 1.1 スカラー — 多くのパーサーで引用符で囲まれていない Yes、No、on、off、NO がブール値になる方法
YAML 1.1 スカラー — 多くのパーサーで引用符で囲まれていない Yes、No、on、off、NO がブール値になる方法。証拠: 予約済み Yes No on off ブール値と null のスペルは引用符で囲まれます。 yaml スカラー セーフティ トークンを引用符で囲まれた値マップ シーケンスにトレースします。順序付けされた値を最終値フィールドから分離します。パーサーの型指定はコレクションの外にあります。
関連する yaml メカニズムの境界は、マップが 2 つのスペースを使用し、配列がダッシュ項目を使用することです。別の yaml 文法境界は次のとおりです。証拠: マップは 2 つのスペースを使用し、配列はダッシュ項目を使用します。この yaml スカラー安全性ファクトを使用して、引用符で囲まれた値マップ シーケンス内の 1 つのメンバーまたはスカラーを予測します。パーサーの入力について決定する前に、警告を確認してください。
60 進ポート — 引用符で囲まれていない 22:22 が整数 1342 として解析できる理由と、Compose ドキュメントでポートを引用符で囲むように記載されている理由
60 進ポート — 引用符で囲まれていない 22:22 が整数 1342 として解析できる理由と、Compose ドキュメントでポートを引用符で囲むように記載されている理由。証拠: 数値のコロンポート文字列は一重引用符で囲まれます。 yaml スカラー安全性シリアル化をそのモデルから判断します。引用符で囲まれた値マップのシーケンスは型を保護しますが、パーサーの型指定に対する操作上の証拠は提供されません。
2 番目の yaml シリアル化の観察は、別個の yaml 出力境界は、直接 quoteYamlString の例によって作成者の決定が明らかになるということです。証拠: 直接 quoteYamlString の例を見ると、作成者の決定が明らかになります。この yaml スカラー安全出力は、設定を使用できないコンテキストから分離します。引用符で囲まれた値マップのシーケンスをレビュー可能な状態に保ち、パーサーの入力を個別にチェックします。
先頭のゼロと 8 進数 — 0755 のような値と、YAML が再解釈するバージョン文字列
先頭のゼロと 8 進数 — 0755 のような値と、YAML が再解釈するバージョン文字列。推測するのではなく、yaml スカラー安全例外で停止してください。引用符で囲まれた値マップ シーケンスに近い追加には、パーサーの型指定に関連した展開固有の理由が必要です。
もう 1 つの yaml 例外制約は、アンカー拡張機能と一般的な YAML 解析がこのシリアライザーの外側にあるという別の yaml 例外境界です。証拠: アンカー拡張機能と一般的な YAML 解析は、このシリアライザーの外部にあります。警告の横に元の yaml スカラー安全コマンドを残しておきます。この比較により、シーケンスに含まれる引用符付きの値マップと、どのパーサーの型決定が手動のままであるかがわかります。
インデントとリスト — 2 つのスペースの規則、キーの下のリスト項目、および環境のマップ対リスト形式:
インデントとリスト — 2 つのスペースの規則、キーの下のリスト項目、および環境のマップ対リスト形式。合成名から yaml スカラー安全性サンプルを構築します。実稼働パーサーのタイピング詳細を公開せずに、すべての引用符で囲まれた値マップのシーケンス項目を追跡可能にします。
同じ yaml サンプルのサンプルは、別の yaml サンプルの境界は、防御的な引用符が出力されたサブセットのみを保護することを示しています。証拠: 防御的な引用は、発行されたサブセットのみを保護します。ペアになった yaml スカラー安全性ファクトは、引用符で囲まれた値マップ シーケンスに表示される必要があります。その行を記録し、パーサーの入力に関する思い込みを避けてください。
うまくいった例: 壊れたファイルを手動で修正する — docker compose config を実行してパーサーが実際に生成したものを確認する
成功した例: 壊れたファイルを手動で修正する — docker compose config を実行して、パーサーが実際に何を生成したかを確認します。 yaml のスカラー安全性の結果を 1 つの観察可能な引用符で囲まれた値に変換し、シーケンスの違いをマップします。 Docker は、後のパーサーのタイピング判定を所有します。
yaml 結果の実装では、別の yaml 効果境界として、単なる NO のような値がパーサーによって再入力される可能性があることも示されています。 yaml スカラー安全性の責任を分割します。変換は引用符で囲まれた値を書き込み、シーケンスを書き込み、リポジトリはシークレットを削除し、演算子はパーサーの型付けを検証します。
これでカバーされないもの — YAML アンカー、拡張フィールド (x-*)、および完全な YAML 1.2 仕様
これでカバーされないもの — YAML アンカー、拡張フィールド (x-*)、および完全な YAML 1.2 仕様。 yaml スカラー セーフティ スコープを、ここに示すシーケンス ブランチを引用符で囲んだ値に制限します。隣接するフォームとデフォルトは、パーサーの入力に関する質問に答えることができません。
もう 1 つの yaml スコープ制限は、「別個の yaml 制限境界」に続き、予約済み、yes no、on off ブール値および null スペルが引用符で囲まれることです。この yaml スカラー安全境界を除外として扱います。パーサーの型付けに関する推測よりも、正確な引用符付きの値マップ シーケンスを優先します。
要点: 明らかに文字列ではないものはすべて引用符で囲み、手書きの YAML をコンバーターの出力と比較して、裸の値を取得します。
要点: 明らかに文字列ではないものはすべて引用符で囲み、手書きの YAML をコンバーターの出力と比較して、裸の値を取得します。ソース オプション、モデル フィールド、引用符で囲まれた値がシーケンス行と警告として yaml スカラーの安全性を監査します。パーサーの入力をチェックする前にシークレットを削除してください。
最後に、yaml テイクアウェイ ソースは、別の yaml 決定境界として、数値のコロン ポート文字列が一重引用符で囲まれていることを確認します。 yaml のスカラー セーフティを狭義に閉じます。引用符で囲まれた値のマップ シーケンスが候補です。パーサーの型指定とシェルの同等性は保証されません。