2016-12-01 17 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] 
相关问题