2017-06-22 16 views
1

とモンゴこれは私のドッキングウィンドウ-構成ファイルです:接続nodejsとドッキングウィンドウ

version: "2" 
services: 
    rest-api: 
    build: . 
    ports: 
     - "3007:3007" 
    links: 
     - mongo 
    mongo: 
    image: mongo 
    volumes: 
     - /data/mongodb/db:/data/db 
    ports: 
     - "27017:27017" 

これは私のDockerfileです:

FROM mhart/alpine-node:latest 

RUN rm -rf /tmp/node_modules 
ADD package.json /tmp/package.json 
RUN cd /tmp && npm install 
RUN mkdir -p /opt/app && cp -a /tmp/node_modules /opt/app/ 

WORKDIR /opt/app 
ADD . /opt/app 

EXPOSE 3007 

CMD ["node", "index.js"] 

私はイメージを実行すると、ノードが接続できませんmongo:

MongoError: failed to connect to server [localhost:27017] on first connect 

何が間違っていますか?これをどのようにデバッグできますか?

アップデート:私は私のノードのアプリで

let connection = mongoose.connect('mongodb://localhost/myapp'); 

答えて

3

ノードはノードと同じコンテナで実行されていないので失敗し、localhostにモンゴに接続しようとしています。代わりに、別のコンテナ、つまり別のホスト上で実行されます。

あなたはおそらく、あなたのアプリケーションでこのような行があります:

var url = 'mongodb://localhost:27017/myproject'; 

のMongoDBが配置されている場所それは定義されています。 localhostを実際のホストに変更する必要があります。その場合はmongoになります。

2

ノードアプリケーションでは、localhostではなくコンテナを参照する必要があります。あなたはおそらくちょうど分例えば

https://docs.mongodb.com/manual/reference/connection-string/

でデフォルトを使用しているホストとして名mongoを使用Mongoのためにあなたの接続文字列で

ローカルホストは、コンテナノードに関連するので、モンゴデータベースが(異なるIPアドレスを持つ)別の容器にそれらはTCPを介して連結されているので、あなたはこれを行う必要があり

mongodb://mongo:27017/ 

はである。

関連する問題