我正在尝试为keystonejs https://github.com/keystonejs/keystone这个官方公共仓库创建 docker 镜像
但是它里面包含很多包,每个包里面都包含 package.json,它是一个多模块项目的短板。
package.json存在于根目录和子目录中。
我们如何创建包含所有这些包的docker镜像?如果有人在keystonejs上工作过,请帮助我吗?
谢谢你
我正在尝试为keystonejs https://github.com/keystonejs/keystone这个官方公共仓库创建 docker 镜像
但是它里面包含很多包,每个包里面都包含 package.json,它是一个多模块项目的短板。
package.json存在于根目录和子目录中。
我们如何创建包含所有这些包的docker镜像?如果有人在keystonejs上工作过,请帮助我吗?
谢谢你
Keystone 代码库确实是“某种多模块项目”——这就是所谓的monorepo。
通常,术语“monorepo”是指来自不同项目的源代码的集合,它们一起存储在版本控制系统内部的单个存储库中(git
例如)。它们在大型项目中相当常见:
谷歌、Facebook、微软、优步、Airbnb 和 Twitter 都采用了非常大的单体存储库,它们采用不同的策略来扩展构建系统和版本控制软件,其中包含大量代码和日常更改。—维基百科:Monorepos
在 NodeJS 生态系统中,“monorepo”通常是指包含多个 npm 包代码的存储库。
在 Keystone 案例中,主要 repo 包括几个 npm 包(在packages目录中)、一堆测试、Keystone 营销和文档网站(在docs中)以及各种其他零碎。
构建 Keystone 的团队 Thinkmill 有一份关于他们使用的monorepo 模式和工具的指南。谷歌搜索会给你很多其他的选择;这是一个热门话题。
我们如何创建包含所有这些包的 docker 镜像?
如果你想使用 docker 部署 Keystone 应用程序,你不需要弄乱 Keystone 存储库本身。你只想安装 Keystone 作为依赖项,就像任何其他 npm 包一样。步骤基本上是:
@keystone-6/core
) 作为依赖项拉入,然后..dockerfile
构建和运行应用程序的运行 Keystone 项目实际上非常简单——只需要几个文件。甚至还有一个名为的工具create-keystone-app
可以为您设置它们。我建议运行入门指南以在本地运行一个简单的应用程序,然后在dockerfile
那里编写。