0

我正在尝试为keystonejs https://github.com/keystonejs/keystone这个官方公共仓库创建 docker 镜像

但是它里面包含很多包,每个包里面都包含 package.json,它是一个多模块项目的短板。

package.json存在于根目录和子目录中。

我们如何创建包含所有这些包的docker镜像?如果有人在keystonejs上工作过,请帮助我吗?

谢谢你

4

1 回答 1

0

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 包一样。步骤基本上是:

  1. 在你自己的仓库中创建一个项目
  2. 核心 Keystone npm 包( @keystone-6/core) 作为依赖项拉入,然后..
  3. 添加一个dockerfile构建和运行应用程序的

运行 Keystone 项目实际上非常简单——只需要几个文件。甚至还有一个名为的工具create-keystone-app可以为您设置它们。我建议运行入门指南以在本地运行一个简单的应用程序,然后在dockerfile那里编写。

于 2022-01-28T04:24:55.860 回答