2017-05-08 6 views
1

私はdocker-compose.ymlファイルをnodejsとmongodb(つまり2つのコンテナ)を持つマルチコンテナアプリを作成するために使いました。サーバーアドレスとポートの選択肢としていくつかのオプションを設定できます。これを行うには 、私はENV変数としてそれらを設定するためにドッキングウィンドウ-compose.ymlに以下のものを書いた:Docker Compose:env変数を変更する

.. 
    web: 
     environment: 
     - PORT=3000 
     - ADDRESS=xxx.xxx.xxx.xxx 
.. 

自分のアプリケーションのソースコードの中で、私はこれらの変数を参照するためにprocess.env.PORTprocess.env.ADDRESSを使用しています。

しかし、これらの値を変更するにはどうすればよいですか?たとえば、PORT=3001と設定しますか? docker-compose builddocker-compose upをもう一度使用して、mongodbコンテナを含むすべてのアプリケーションを構築する必要がありますか?

+2

環境変数は実行時の指示です。 'docker-compose.yml'で環境変数を変更してから、' docker-compose up'を再実行してください。 – johnharris85

+0

johnharris85が述べたように、ドッカーを再起動するだけで十分です。 docker-compose.ymlで環境変数を使用する代わりに、環境ファイルを使用することもできます。 https://docs.docker.com/compose/env-file/ –

答えて

2

私はドッカーを使用してビルドとドッキングを再作成し、すべてのアプリケーションを構築する必要があります。これにはmongodb containerが含まれていますか?

build、ちょうどupです。それらは実行時オプションであり、ビルドオプションではありません。 docker-compose.ymlファイルでそれらを変更してから、再度docker-compose upを実行すると、新しい環境変数でコンテナを再作成する必要があります。

また、あなたは簡単に変更のために作るためにdocker-compose.ymlファイル外の環境変数を指定することができます。これらのメソッドの

  1. 一つは、あなたがdocker-composeフォームを実行し、同じフォルダ内に.envファイルを使用することです(ためhttps://docs.docker.com/compose/env-file/を参照してくださいそれに関する情報)。
  2. 別のオプションは、シェルから環境変数を補間することです。 docker-composeを実行する前に、シェルに- PORT=${APP_PORT}、次にexport APP_PORT=3000などを指定できます。詳細については、https://docs.docker.com/compose/environment-variables/を参照してください。
-1

env_file設定を使用して、同じ行内に環境ファイルを定義することができます。ここで

は私のドッキングウィンドウ-compose.ymlがどのように見えるかです:

services: 
    web: 
    env_file: variables.env 

ドッキングウィンドウ-COMPOSEは、ENVファイルの各行は、VAR=VAL形式であることを想定していますのでご注意ください。 .envファイル内にexportを使用しないでください。

関連する問題