2016-08-22 6 views
3

ノード・アプリケーションの1つをドッキングしています。このアプリケーションの機能の1つは、最初にmongoexportを使用してmongodbデータをダウンロードし、ファイルに書き込むことです。ドッキング・ノード・アプリケーション実行時に「エラー:mongoexport ENOENTを生成する」

私はchild_process産卵

var spawn = require('child_process').spawn; 
var mongoExport = spawn('mongoexport', [ 
       '--db', 'dbname', '--collection', 'collection1', 
       '--fields', 
       'name,address,city,country,pincode', 
       '--type', 'csv' 
      ]); 

アプリの開始を使用してこれを行うと、私は、コマンドプロンプトから「ノードapp.js」を実行すると正常に動作しています。

しかし、このノードアプリケーションをドッキングして実行しようとすると、「エラー:スポーンmongoexport ENOENT」と表示されます。

私はmongoexportをコメントアウトによって確認された一つの容器でのMongoDBを実行し、私は、この問題をデバッグするために、次の試してみましたMongoDBのコンテナ

docker run --restart=always --name mongo-rnd -v /opt/mongo_rnd:/data/db -d mongo:3.2.7

docker run -e "MONGO_HOST=mongo-rnd" -p 8081:8081 -d --name nodeapp --link mongo-rnd:mongo-rnd nodeappimageid

との連携、他の容器内のノードアプリ、

  1. すべての機能が正常に動作します。
  2. ドッカーコンテナ内のchild_processに問題があると考えました。だから、私は、単純な「1!」コマンド
const ls = spawn('ls', ['-lh', '/usr']); 
ls.stdout.on('data', function(data){ 
    console.log("stdout:" + data); 
}); 

ない問題にしようとした、それがうまく働きました。

私の結論は、 'mongoexport'コマンドはnodejsドッカーコンテナの内部では使用できません。

誰でもこれを達成する方法がありますか?またはこれを行うことはできませんか?

は、ここで私は正しく推測しているとして、問題は「MongoDBのは」nodeappコンテナにインストールされていなかったということです参照

FROM node:wheezy 

RUN mkdir -p /usr/src/temp 

COPY . /usr/src/temp 

WORKDIR /usr/src/temp 
RUN npm install 

ENV PORT=8081 
ENV MONGO_HOST "localhost" 

EXPOSE 8081 
CMD node app.js 
+0

私がしなければならなかったすべては、私がmongoexportコールで--host--portを指定する必要がありましたコードからnodeappコンテナ

RUN apt-get update RUN apt-get install -y mongodb 

でのMongoDBをインストールするには、Dockerfileに以下の行を追加しました'--type'が冗長で' --csv'だけで十分ですか? [mongoexport with parameters + node.js + child process](http://stackoverflow.com/a/20176549/1983854)にあります。 mongoexport 3.0.0の '--type = csv'の([https://docs.mongodb.com/manual/reference/program/mongoexport/]参照)が正しい方法です。 – fedorqui

+0

はい。あなたは正しいです。 --typeは最新のmongoで認識されません(私は3.2.7でテストしていました)。 --csvとして指定するのに十分です – Chandru

答えて

3

のための私のドッキングウィンドウのファイルです。

var mongoExport = spawn('mongoexport', [ 
       '--db', 'dbname', '--host', 'mongo-rnd', '--port', 27017, '--collection', 'collection1','--fields', 'name,address,city,country,pincode', 
       '--csv']); 
関連する問題