2017-06-30 11 views
0

私は2つのDockerコンテナを実行しています。 1つはMongoDBであり、1つは単純な休止APIを実行しているMongoDBコンテナーを照会できるコンテナです。2つのDockerコンテナを互いに話すには?

ポートマッピング

  • 0.0.0.0:28001->27017/tcp(MongoDBの)
  • 0.0.0.0:3000->3000/tcp(restapi)のために使用さ

コマンド私はIP

をバインドするには、0.0.0.0を追加するmongo.confをオーバーライドするのMongoDB画像

docker run -p 28001:27017 -v /home/ubuntu/docker/mongodb/mongod.conf:/etc/mongod.conf --name mongodb_container -d mongodb_image 

APIを使用

net: 
    port: 27017 
    bindIp: [127.0.0.1,0.0.0.0] 

実行]コマンド:

docker container run -it -v /home/ubuntu/docker/node_modules:/usr/lib/node_modules -p 3000:3000 --name rest_container rest_image /bin/bash 

私は残りのAPIを照会することができるよ、それがハングしてタイムアウトに(結果を返すことはありません)。

{ "db": { 
    'port': 28001, 
    'host': "192.168.123.191" 
    }, 
    'server': { 
    'port': 3000, 
     'timeout': 120, 
    'address': "0.0.0.0" 
    }, 
    'flavor': "regular", 
    'debug': true 
}; 
残りのAPIコンテナの

内部IP:

172.17.0.2

:MongoDBのコンテナの

172.17.0.4

内部IP残りの設定ファイルは次のようになります

ドッカーでプログラムを実行せずにクエリを実行できるため、APIが動作することがわかりました。ポート27017と3000は両方ともDockerfileに公開されています。 mongodbコンテナでは、クエリを実行するたびに接続数が増えることもわかります。

+0

コンテナからクエリするIPはどれですか? –

+2

'docker-compose'を見て、あなたが必要としているものだと思います。 – Ayushya

+0

@ChrisStryczynski 192.168.123.191:28001 – Adz

答えて

3

ドッカー1.9より前は、「リンク」を使用する必要がありましたが、廃止予定です。今すぐ "カスタムネットワーク" https://docs.docker.com/engine/userguide/networking)を作成し、このネットワーク内でコンテナを実行する必要があります。例えば

docker network create --driver bridge my_network 

docker run --network=my_network -p 28001:27017 -v /home/ubuntu/docker/mongodb/mongod.conf:/etc/mongod.conf --name mongodb_container -d mongodb_image 

docker container run --network=my_network -it -v /home/ubuntu/docker/node_modules:/usr/lib/node_modules -p 3000:3000 --name rest_container rest_image /bin/bash 

そして、あなたはありませんMongoのホスト名を使用して(containe'rsの名前と同じである)とMongoのコンテナのポートを使用して話をするノードを設定する必要がありますし、外部のもの、私はポート27017ではなく28001を意味します。そのため、外部からアクセスしない限り、ポートバインド-p 28001: 27017は不要です。

{ "db": { 
    'port': 27017, 
    'host': "mongodb_container" 
    }, 
    'server': { 
    'port': 3000, 
    'timeout': 120, 
    'address': "0.0.0.0" 
    }, 
    'flavor': "regular", 
    'debug': true 
}; 
+0

途中で返信いただきありがとうございます。あなたの答えは動作しますが、問題は、APIが機能するためにコンテナ内のノードバージョンをダウングレードしなければならないということでした。 – Adz

関連する問題