这个用例是在 Lerna monorepos 中的分支构建和部署。
问题是 Lerna monorepos 要么提升 NPM 中的依赖项,要么使用 yarn 工作区达到相同的效果来收集工作区/monorepo 的 node_modules 文件夹中的所有依赖项。这意味着由于 docker 构建上下文的工作方式,在子文件夹中构建 Dockerfile 时将无法访问它们。
我想这里需要的是一种“较低”(与提升相反)的函数,用于在运行 docker build 之前将包依赖项拉到 Docker/package.json 项目的 node_modules 中。
问题是,有没有人有更好的主意,或者知道已经存在的方法来做到这一点?
我最近开始使用 lerna 来管理 monorepo,在开发中它运行良好。
Lerna 在我的各种包之间创建符号链接,因此像 'tsc --watch' 或 nodemon 这样的工具可以很好地检测其他包中的变化。
但是我在这种环境中创建 docker 镜像时遇到了问题。
假设我们有一个具有这种结构的项目:
root
packages
common ? artifact is a private npm package, this depends on utilities, something-specific
utilities ? artifact is a public npm package
something-specific -> artifact is a public npm package
frontend ? artifact is a docker image, depends on common
backend ? artifact is a docker image, depends on common and utilities
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在开发中,一切都很好。我正在运行某种实时重新加载服务器,并且符号链接可以正常工作,因此依赖项可以正常工作。
现在假设我想从后端创建一个 docker 镜像。
我将介绍一些场景:
我ADD在我的 Dockerfile 中打包.json,然后运行 npm install。 …