2016-12-20 8 views
0

RethinkDB用とnodejs用の2つのコンテナを2つ作成しました。nodejsアプリを別のコンテナからRethinkdbにリンク

私はこのRethinkDBに私のnodejsアプリを接続したいが、毎回、私はエラー

Error:{"message":"Failed to connect to localhost:58015\nFull error:\n{\"code\":\"ECONNREFUSED\"

を取得してみてくださいしかし、私は開いているポート(58015)で、RethinkDBにドッカーなく、同じnodejsアプリの実行を接続することができます。

マイドッカー(設定は私がRethinkDBポートで試してみました

database: { 
    servers: [ 
     { 
      host: process.env.DB_PORT_28015_TCP_ADDR || 'localhost', 
      port: process.env.DB_PORT_28015_TCP_PORT || 28015 
     } 
    ], 
    name: 'atlas' 
}, 

JSの設定ファイル内のホストとポートを設定デシベルに私のアプリを接続するには、この

# Rethink DB 
rethink: 
    build: docker/rethinkdb 
    container_name: rethink 
    ports: 
    - 58080:8080 
    - 58015:28015 
    - 59015:29015 

# NodeJS 
nodejs: 
    build: docker/nodejs 
    container_name: nodejs 
    ports: 
    - 53000:3000 
    - 55000:5000 
    depends_on: 
    - rethink 

のように見える28015を構成します)と私の開いているポート(58015)とは成功しません。

私はこの2つの容器をlinks,network_modeとリンクさせようとしましたが、これも成功しませんでした。

私が試したすべてのソリューションは動作しません。

nodejsアプリが接続しようとすると、自分のRethinkコンテナが準備できていないと思います。私は本当にこの問題を理解していない、これはこれではない場合。 nodejsアプリがpm2で実行されています

どうすればこのアプリをデータベースに接続できますか?

+1

アドレス:rethinkとポート:28015に接続しようとしましたか? – Lauri

+0

いいえ、これが現在機能しています。ありがとう –

答えて

0

私の知る限りでは、特にをリンクし、同じネットを使用しない限り、1つのドッカーコンテナは、他のは表示されません。

docker run \ 
    --name ${NEWAPP} \ 
    --restart=always \ 
    --env MYAPPPAR=${PROJ} \ 
    -v /var/log/docker/node/logs:/usr/src/app/log \ 
    --link myapp_rethink_1:myapp_rethink_1 \ 
    --net myapp_default \ 
    -p ${PORT}:9000 \ 
    -d ${NEWAPP} 

ですから、両方--netと--linkを必要とします:

  • --link形式はsourcecontainername:containeraliasname
  • --net容器は、内部DNS/CONTとの互いを見つけることができるようにainername。あなたが設定あなたのための「ドッカネットワークls」の
+0

私は知っていると私は試みましたが、ドッカーがファイル2を作成して以来、すべてのコンテナは同じネットワーク( 'project_default')にあり、' depends_on'を使用しているので、リンクは廃止されました。問題は接続ホストでした。 –

1

とネットワークを確認することができドッカ - コンの新しいバージョン、あなたのサービスを使用するときは、 # Rethink DB rethink: build: docker/rethinkdb container_name: rethink ports: - 58080:8080 - 58015:28015 - 59015:29015 # NodeJS nodejs: build: docker/nodejs container_name: nodejs ports: - 53000:3000 - 55000:5000 links: - rethink depends_on: - rethink

とJSコードで database: { servers: [ { host: process.env.DB_PORT_28015_TCP_ADDR || 'rethink', port: process.env.DB_PORT_28015_TCP_PORT || 28015 } ], name: 'atlas' },

0

を使用する必要があります同じネットワーク上で実行するように設定されます。

「ドッカー作成」のトップレベルのサービス名。YMLは:アプリの設定の中に、DB 『」あなたのアプリからRethinkDBに接続する際に、指定する必要がホストとなります

# docker-compose.yml 

    version: '3.2' 
    Services: 
     web: 
     build: . 
     links: db 
     ... 
     db: 
     image: rethinkDB 
     ... 

上記の例を使用して、名前のホストを使用してRethinkDBに接続することができます』ファイル:

module.exports = { 
     rethinkdb: { 
     host: 'db', 
     port: 28015 
    } 
    }; 
関連する問題