Linux虚拟机中Node.js Docker容器自定义脚本失效问题及解决
Node.js Docker容器在Linux环境启动失败的解决方法
问题概述
在Linux虚拟机中部署Node.js Docker容器时遇到两类异常:
- 执行
npm run start:prod启动容器时,报错npm ERR! Missing script: "start:prod",但调试阶段确认该脚本存在,且dist目录已生成main.js文件 - 改为直接执行
node dist/main.js启动时,又出现Error: Cannot find module '/usr/src/app/dist/main.js' - 相同配置在Windows环境可正常运行,尝试修改
tsconfig.json、调整文件权限均未解决问题
解决措施
- 调整npm启动命令
将ENTRYPOINT中的npm run替换为npm run-script,示例:
# 原命令 ENTRYPOINT ["npm", "run", "start:prod"] # 修改后 ENTRYPOINT ["npm", "run-script", "start:prod"]
- 拆分COPY指令
把Dockerfile中宽泛的COPY . .拆分为多个精准的拷贝命令,避免Linux下的路径规则或隐藏文件干扰:
# 替换原有的 COPY . . COPY *.json ./ COPY *.js ./ COPY ./src ./src COPY ./test ./test
内容的提问来源于stack exchange,提问作者LiBertt
相关产品推荐
相关产品推荐

