2017-03-16 9 views
0

https://docs.docker.com/compose/compose-file/#envfileで述べたように、環境変数を特定のファイルに入れることができます。しかし、私はそれを作ることはできません。私は過去の時間にそれを理解できませんでした。でも、私はドッカー(ドッカーバージョン1.12.5)とドッカー作成(バージョン1.9.0)の両方を最新のバージョンにアップグレードしました。docker-composeはSOME.envファイルから変数を取得できません

  • ドッキングウィンドウ-compose.yml:

    version: '2' 
    services: 
        box: 
        image: busybox 
        env_file: tt.env 
        command: echo $RACK_ENV 
    
  • tt.env

    # Set Rails/Rack environment 
    RACK_ENV=development 
    

をドッキングウィンドウ-構成の出力は次のようになります。

WARNING: The RACK_ENV variable is not set. Defaulting to a blank string. 
Creating network "test_default" with the default driver 
Creating test_box_1 
Attaching to test_box_1 
box_1 | 
test_box_1 exited with code 0 

これは、tt.envファイルの変数セットが正常に取得されないことを意味します。私が間違っていた場所を教えてください。

+0

「.envは」動作しますが、私は環境を切り替えるには、このファイル名を割り当てる機能を必要としています。 – Cross

答えて

2

Docker Composeは変数置換のためにデフォルトで.envというファイルを読み取ります。そのため、それが機能しています。 https://docs.docker.com/compose/compose-file/#variable-substitution

設定が リテラルのドル記号を必要とするときは、$$(二重ドル記号)を使用することができます。これにより、Composeが の値を補間するのを防ぐので、$$は、 がComposeで処理したくない環境変数を参照することを許可します。

つまり、あなたのコンファイルを少し変更する必要があります。

version: '2' 
    services: 
    box: 
     image: busybox 
     env_file: tt.env 
     command: ["sh", "-c", "echo $$RACK_ENV"] 
+0

うわー、これは違いを作りました。ありがとう、Lauri!今私は完全にドキュメントを理解:) – Cross

関連する問題