2016-08-19 2 views
0

도커 컨테이너 내에 하나의 nodejs 응용 프로그램을 실행하려고합니다. 도커 컨테이너에 들어가 응용 프로그램을 실행하면 모든 것이 기대됩니다. 그러나, 일단 나는 도커 exec을 사용하여 컨테이너에 명령을 보냅니다. 오류가 발생했습니다 TypeError : Object # 'execSync'메서드가 없습니다. 어떻게 노드 애플리케이션의 child_prcess를 도커 컨테이너에서 사용할 수 있습니까?도커 컨테이너 내부에서 실행중인 nodejs 응용 프로그램 내에서 child_process를 사용하는 방법

[email protected]:/apps# cat test.js 
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim(); 
console.log(aaa); 
[email protected]:/apps# node test.js 
aaaaaaaaa 
[email protected]:/apps# 

[email protected]:~/$ docker exec containername bash -c "cd /apps;node test.js" 

/apps/test.js:1 
module, __filename, __dirname) { var aaa = require('child_process').execSync(' 
                    ^
TypeError: Object #<Object> has no method 'execSync' 
    at Object.<anonymous> (/apps/test.js:1:98) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:902:3 
[email protected]:~/$ docker exec containername bash -c "cd /apps/;cat test.js" 
var aaa = require('child_process').execSync('echo "aaaaaaaaa"').toString().trim(); 
console.log(aaa); 
+0

방금 ​​docker run -rm -ti node : latest node와 이것을 테스트했는데'require ('child_process')'는 execSync가 있음을 명시 적으로 보여줍니다. –

답변

0

execSync()v0.11.12 release에 도입되었다.

노드 버전을 확인하십시오.

docker exec containername bash -c "node -v" 
+0

그것은/usr/bin/node가 구버전 인 것을 확인한 후에 nvm install node v4.2.3을 사용합니다. 내가 한 일은 부드러운 링크를 만드는 것이므로 지금은 괜찮습니다. [email protected] : $ 도커 간접비 보조 bash -c "/ usr/bin/nodejs -v" v0.10.25 [email protected] : $ 도커 간접비 보조 bash -c "어느 노드" /usr/bin/node [email protected] : $ 도커 간접비 보조 bash -c "노드 -v" v4.2.3 – jacobcan118

관련 문제