启动Docker容器时运行npm脚本时出错

时间:2020-03-27 03:14:25

标签: node.js docker npm

在我的DockerFile中,我将此设置作为命令。

CMD config/startserver.sh

让npm运行构建正常工作时遇到问题。当我进入conatiner并运行docekr exec npm手动运行构建时,我运行npm运行构建没有问题,但是由于某种原因,在.sh中运行它会导致问题。关于为什么在.sh内运行npm run build的任何想法都可能导致问题。

npm run build

pm2 start server.js -f -- 5000
pm2 start server.js -f -- 5001
pm2 start server.js -f -- 5002
pm2 start server.js -f -- 5003
pm2 start server.js -f -- 5004

nginx -g "daemon off;"

wait
0 info it worked if it ends with ok
1 verbose cli [ '/usr/bin/node', '/usr/bin/npm', 'run', 'build\r' ]
2 info using npm@6.13.4
3 info using node@v10.19.0
4 verbose config Skipping project config: /home/lgd/.npmrc. (matches userconfig)
5 verbose stack Error: missing script: build
5 verbose stack
5 verbose stack Did you mean this?
5 verbose stack     build
5 verbose stack     at run (/usr/lib/node_modules/npm/lib/run-script.js:155:19)
5 verbose stack     at /usr/lib/node_modules/npm/lib/run-script.js:63:5
5 verbose stack     at /usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:116:5
5 verbose stack     at /usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:436:5
5 verbose stack     at checkBinReferences_ (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:391:45)
5 verbose stack     at final (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:434:3)
5 verbose stack     at then (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:161:5)
5 verbose stack     at ReadFileContext.<anonymous> (/usr/lib/node_modules/npm/node_modules/read-package-json/read-json.js:350:20)
5 verbose stack     at ReadFileContext.callback (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:115:16)
5 verbose stack     at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:237:13)
6 verbose cwd /home/lgd
7 verbose Linux 4.19.76-linuxkit
8 verbose argv "/usr/bin/node" "/usr/bin/npm" "run" "build\r"
9 verbose node v10.19.0
10 verbose npm  v6.13.4
11 error missing script: build
11 error
11 error Did you mean this?
11 error     build
12 verbose exit [ 1, true ]

1 个答案:

答案 0 :(得分:0)

不得不回到Docker中的调用脚本,因为当我推送容器时,我的服务器上出现权限错误。

我认为David是对的,我只需要修复行尾即可。

我最终改变了

webscraping

CMD config/startserver.sh

并添加到我的package.json脚本中

CMD [ "npm", "run", "start-production" ]