我们目前正在与我们的团队一起为我们的网站研究 CI/CD。我们最近还适应了 monorepo 结构,因为这使我们的依赖关系和概览变得更加容易。目前测试等已为 CI 做好准备,但我现在正在部署。我想创建所需包的 docker 映像。
我考虑的事情:
1) 将完整的 monorepo 拉入 docker 项目,但在我们的项目中运行 yarn install 会导致项目总大小约为 700MB,这主要是由于我们的 react native 应用程序甚至不应该有 docker 映像。此外,每次我们必须部署新版本时,这都会导致很长的图像拉取时间
2)以某种方式捆绑我的项目。使用我们的前端,我们有工作设置,所以应该没问题。但是我只是尝试将 webpack 添加到我们的 express api 并由于这个问题而在我的包中出现错误:https ://github.com/mapbox/node-pre-gyp/issues/308
3)我尝试只在需要的项目中运行 yarn install ,但这仍然会为我的所有项目安装我的 node_modules。
4) 运行 npm 包:pkg。这导致单个文件准备好在具有特定节点版本的特定系统上运行。这确实有效,但我不确定这将如何处理错误和崩溃。
5)另一种解决方案可能是将项目复制到工作区之外并在那里运行纱线安装。这样做的问题是纱线工作空间(隐式链接依赖项)的使用已经过去了。我必须明确添加我的其他工作区依赖项。一种可能性是从某个提交哈希中引用它们,我现在将对其进行测试。(编辑:您似乎不能将子目录作为纱线包引用)
6)???
我想知道我是否缺少一个选项,让某个项目只拥有所需的 node_modules,这样我就可以保持我的 docker 图像很小。