2016-11-15 15 views
17

私は私docker-compose.ymlファイルを評価しようとすると、次のエラーを投げているYAMLスカラーを持っている:ドッカーの作成ファイルでドル記号をエスケープするにはどうすればよいですか?

ERROR: Invalid interpolation format for "environment" option in service "time_service": "${Time.now}"

YAML:私は書かれて同じ文字列の出力を維持するにはどうすればよい

--- 
version: '2' 
services: 
    time_service: 
    build: "." 
    environment: 
     TIME: "${Time.now}" 

が、ドッカーが誤った文字列補間として解釈するのを避けますか?

+0

その文字列を解釈しているのはYAMLパーサではありません。 YAMLは$ {}について知りません。解釈は 'docker-compose'によって行われ、Pythonで書かれているので、タグrubyも不適切です。 – Anthon

+0

これはYAMLの問題であるという間違った前提を削除しました。少なくとも1人の人が誤解を招き、時間を無駄にしてしまった(https://stackoverflow.com/questions/45312806/how-to-escape-a-sign-in-an-ansible-host-vars-file) – Anthon

答えて

27

と評価され、"$${Time.now}"が必要:あなたはgithubに見るように

Both $VARIABLE and ${VARIABLE} syntax are supported. Extended shell-style features, such as ${VARIABLE-default} and ${VARIABLE/foo/bar}, are not supported.

You can use a $$ (double-dollar sign) when your configuration needs a literal dollar sign. This also prevents Compose from interpolating a value, so a $$ allows you to refer to environment variables that you don’t want processed by Compose.

docker-composeを、Pythonで書かれています特殊文字の本来の意味を理解するための倍化の仕組みは多くのプログラムで見つけることができますが、1984年にはこれまでのプログラミングで、これを自分自身で使用する必要がありました。

9

は、それは二重のドル記号$$を必要this post

%文字の提案をコピーして答えを見つけました。

は、だから私はあなたがうまくhereを文書化されてdocker-compose変数substition、ヒットしている"${Time.now}"

関連する問題