2016-12-01 14 views
2

假設我有以下Dockerfile如何搬運工執行非全局NPM二進制

WORKDIR $APP_DIR 
ENTRYPOINT ["npm", "run"] 
CMD ["start"] 

start映射到babel-node bin/server,其中巴貝爾節點是的NodeJS非全局依賴二進制文件(裏面安裝默認$ APP_DIR/node_modules)

在我的Mac上,沒有任何設置,這工作正常。但是,當我在Docker中運行它時,它顯示命令未找到,這並不意外。

因此,同樣的命令npm run start適用於我的主機,但在Docker內。

sh: 1: babel-node: not found 
error Command failed with exit code 127. 

回答

1

你可以試試這種方式:CMD [./node_modules/babel-node/bin/babel-node your app.js];

或嘗試用另一種方式:

// you can rename this file to bin.js 

const fs = require('fs'); 
const babelrc = fs.readFileSync('.babelrc', 'utf-8'); 
let config = {}; 
try { 
    config = JSON.parse(config); 
} catch(err) { 
    console.error('==>  ERROR: Error parsing your .babelrc.'); 
} 
require("babel-polyfill"); 
require('babel-register')(config); 

// then require your app.js 
require('./app.js); 

那麼你Dockerfile會看起來像如下:

...other codes 
CMD [node bin.js] 
相關問題