ドキュメント自体はboth methods are working言う:
あなたは配列や辞書のいずれかを使用することができます。
今度は、適切な用語を使用することができないためにドッカーを許しましょう(配列が実際にYAMLでシーケンスで、辞書はマッピングである)とYAMLの観点から見て:
マッピングはYAML構文の一部であるため、YAMLパーサによって解析されます。これにより、構文認識エディタが適切な強調表示などを行うことができます。ドキュメントのように、true
とfalse
のような値はYAMLによってブール値に変換されるので、それに注意する必要があります。ドキュメントからの例:
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET:
我々は'true'
を引用しないだろう、それは我々が望むものではないブール値として解析されます。
一方、シーケンスを使用すると、YAML構文のスペースが残ります。シーケンス自体はYAMLですが、値はちょうど1つのスカラーとして解析されます。例えば、ここではシーケンスの最初のスカラー値:
environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
はRACK_ENV=development
としてYAMLによって解析されます。 Dockerは変数名と値を分離するために後処理を行います。したがって、この方法を使用すると、2つの構文解析ステップを使用しているため、構文認識エディタで適切に強調表示することが難しくなります。また、=
とどこの:
を使用するかについての決定をユーザーに課しますが、これはYAMLをよく知らない人にとってはすぐにはわかりません。それは人々を混乱させる可能性があります。
エスケープすると、true
を引用符で囲む必要はありません。これはYAMLスカラーの中間にあるため、スタンドアロン値として解析されないためです。実際には、YAMLが引用を内容として扱うようにすることを言います。
にはの引用符が必要な場合(たとえば、エスケープシーケンスを使用する場合など)、スカラー全体を引用する必要があります。あなたの価値の内側タブ文字を持つようにしたい場合たとえば、それは次のようになります:
environment:
- "MY_VAR=some\tvalue"
あなただけ=
後に一部を引用する場合には動作しません。繰り返しますが、これは混乱するかもしれません。
結論:私にとっては、マッピングを使用すると一貫性があり、ユーザーの混乱を招くことが少なくなるため、望ましいと思われます。 ymmv。
意見はありますか? –
私はそのチュートリアルのコードを使用して、他の画像や他の環境変数にいくつかの変更を加えるつもりです。これを行う方法はわかりません。あるいは、私はこれらの課題をよりよく理解する必要があります。質問は「これは正当なものです」 – trzczy
私は仕事とそれが意見の問題であると信じていると言っています。好奇心にはあまり間違いがない。両方を試してみて、どの作品が好きなのかを見てみましょう。 :-) –