解决Vite, Vue, SSR项目在Docker中构建失败的问题?

关于Vite,Vue,SSR的项目,已经开发完成。准备在服务器上(使用了docker)构建,然后一直构建失败。

// 版本信息
vue: "^3.4.21",
vite: "^5.1.6",
npm: ">=8.0.0",
node: ">=18.0.0"
// 打包命令
"build:test": "npm run build:client:test && npm run build:server:test",
"build:client:test": "vite build --ssrManifest --outDir dist/client --mode test",
"build:server:test": "vite build --ssr src/entry-server.js --outDir dist/server --mode test",
// dist目录结构
dist -client // 客户端
     -server // 服务端
     -index.js // express server 启动入口文件
     -package.json

第一次尝试

项目打包后生成dist文件,然后将生产环境的package.json扔到dist里,下载依赖,使用pm2运行,

// 执行命令
>>cd dist
>>npm install
>>pm2 start index.js -i max

结果发现docker容器一直重新启动,经查看pm2官网文档,发现需要进行docker集成,后使用pm2-runtime

第二次尝试

全局安装pm2,如下仍然失败

// 执行命令
>> cd dist
>> npm install 
>> pm2-runtime index.js -i max

后发现,可能是docker配置文件的命令执行顺序问题,
执行npm install 之后,没有等依赖下载完成,立刻执行了pm2-runtime index.js。

各位前后端或运维大佬们后面该咋搞?
有没有可能打包生成dist后不需要下载依赖(尝试过,会提示import express from "express" express not found),或者docker流水线如何配置,或者其他的可能解决方法。
让我这前端小白处理属实为难了!

阅读 803
1 个回答

1.不在dist里下载依赖
2.使用pm2配置文件ecosystem.config.cjs
3.docker CMD ["pm2-runtime", "ecosystem.config.cjs"]中pm2-runtime 改为pm2 安装地址

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题