假设我有以下 Dockerfile
WORKDIR $APP_DIR
ENTRYPOINT ["npm", "run"]
CMD ["start"]
start
映射到 babel-node bin/server
,其中 babel-node 是一个 Nodejs 非全局依赖二进制文件(默认安装在 $APP_DIR/node_modules 内)
在我的 Mac 上,无需任何设置,效果很好。但是当我在 docker 中运行它时,它显示命令未找到,这并不奇怪。
因此,相同的命令 npm run start
在我的主机上工作,但在 Docker 内部。
sh: 1: babel-node: not found
error Command failed with exit code 127.
最佳答案
你可以这样尝试: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]
关于node.js - 如何在 docker 中执行非全局 npm 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40922440/