有个后台项目需要同时启动后台页面和启动脚本监听前端页面,监听是用的puppeteer来模拟浏览页面,整个项目部署在docker容器上。
起先是打算在dockerfile 里用RUN去跑npm run 命令,发现每次都超时,翻阅了一下docker了解了RUN、CMD以及ENTRYPOINT的一些区别,RUN是用来build整个容器,CMD才是等容器完成后去启动命令的,但一个DockerFile只能有一个CMD,第二个CMD会把第一个覆盖掉,就试着用&&去链接两个npm,发现每次只跑了前面但命令,后面的就没跑。
后来换了个思路,DockerFile 还是一条启动项目的命令,在项目的启动脚本里去并行执行两条命令,用的npm run xxx &&npm run yyy,也发现只跑了前面的,后面的没跑,去google了一下,有用concurrently的,试了一下确实可以
类似:"concurrently \"npm run xxx\" \"npm run yyy\""
需要装第三方库,麻烦,又查到了 &是 并行执行 ,&&
是继发执行(等前一个运行完后再运行下一个)
改为:"npm run start & npm run capture "
后台页面能正常打开,node 进程也在服务器上起来了。