2017-01-18 14 views
0

私は、次のドッキングウィンドウ・コンファイルがあります:別の容器から容器Ipを得るには?

version: '2' 
services: 
    node: 
    build: ./node/ 
    ports: 
     - "3000:3000" 
    volumes: 
     - ~/src/api:/code 
    links: 
     - postgres 
    environment: 
     - NODE_ENV=dev 
     - POSTGRES_ADDRESS=postgres 

    postgres: 
    build: ./postgres/ 
    ports: 
     - "8000:5432" 
    environment: 
     - POSTGRES_PASSWORD=pw 
    volumes: 
     - ~/Postgres/data/:/var/lib/postgresql/data 

をしかし、私は私のnodejsでprocess.env.POSTGRES_ADDRESSにアクセスすると、それはpostgresの 'を返します。これは私がいつもやっているやり方で、postgresコンテナのIPを返すべきです。

私はpostgresコンテナのIPにどのようにアクセスできますか?

+0

なぜコンテナIPが必要ですか?あなたの例では 'postgres'のようなコンテナ名で常にアクセスできます。 この質問の名前を「別のコンテナからコンテナIPを取得する方法」に変更する必要があるかもしれません。 env変数はコンテナー名をIPアドレス –

+0

に動的に変換できないため、ホスト名からIPアドレスを取得する必要がある場合はnslookup: 'nslookup postrges'を使用できます。 –

+0

あなたは絶対に正しいです。ありがとうございました。私は明示的に私のnodejsアプリでこれを動作させるためにipが必要だと思った。 – mrlarssen

答えて

0

ドッカーネットワーク内の別のコンテナにコンテナ名でアクセスできます。また

ドッキングウィンドウは、IP 127.0.0.11でDNSサーバーを作成し、あなたがそれを頼むことができるドキュメントからnslookup postrges

1

のような「どこコンテナではありません」:「環境変数は、もはやリンクされたサービスに接続するための方法をお勧めします。」

https://docs.docker.com/compose/link-env-deprecated/

@Bukharovセルゲイさんのコメント受け入れ答えは次のとおりです。

「あなたは、コンテナのIPが必要なのか、なぜあなたは常にあなたの例ではpostgresのように、コンテナ名でアクセスすることができますがする必要があることであるかもしれませ?。 env変数がコンテナ名をIPアドレスに動的に変換することができないため、この質問の名前を「別のコンテナからコンテナIPを取得する方法」に変更してください。「IPは必要ありませんでした。コンテナ。

関連する問題