2016-08-22 3 views
3

노드 응용 프로그램 중 하나를 도킹하는 중입니다. 이 응용 프로그램의 기능 중 하나는 처음에 mongoexport를 사용하여 mongodb 데이터를 다운로드하고 파일에 기록하는 것입니다.도킹 된 노드 응용 프로그램을 실행할 때 "오류 : spong 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"이 표시됩니다.

은 내가 시도

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

MongoDB를 컨테이너에 링크 된 다른 컨테이너에 하나 개의 컨테이너에 MongoDB를하고, 노드 응용 프로그램을 실행하는이 문제를 디버깅하는 다음,

  1. 나는 mongoexport을 주석에 의해 확인 기능, 모든 것이 잘 작동합니다.
  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'만으로 충분할 수 있습니까? [매개 변수 + node.js + 자식 프로세스가있는 mongoexport] (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']); 
관련 문제