gpt4 book ai didi

node.js - 将我的 Node 应用程序转换为 Docker/Kubernetes?

转载 作者:搜寻专家 更新时间:2023-11-01 00:28:43 25 4
gpt4 key购买 nike

我有一个 Node 应用程序,它由几个独立的模块组成,通过 AMQP 相互通信。这个应用程序由一个 index.js 文件启动,该文件在我的项目的不同文件夹中实例化所有其他 index.js,进而实例化实际的模块。

我一直在阅读有关微服务的文章,并且想将我的应用程序转换为 Docker 容器。我找到了如何将简单的 Node 应用程序转换为 Docker 的示例,但我想分离我的应用程序,以便每个模块都在一个独立的 Node 容器中(这是因为每个模块都是独立的,不依赖于其他模块来工作。他们从消息队列接收工作,并将结果放入消息队列。

我找不到关于我应该如何组织和部署我的代码的信息。我应该为我的每个模块创建一个不同的 Node 项目(带有单独的 packages.json)吗?或者我应该为我的所有模块创建一个 Node 项目并单独部署它们吗?

在我组织好我的项目后,是否有一个脚本工具可以将我的每个模块生成(构建*和部署)到它自己的容器中?到目前为止,我发现的所有示例都是仅包含一个应用程序的“hello world”级别示例。

在开发过程中,我是否必须为我测试的每个更改部署新容器?

*: 构建,因为我使用 ES6,我必须使用 Babel。

最佳答案

Should I have a separate packages.json for each Dockerfile? From what I've read, I understand the Dockerfile will actually run NPM and download the actual packages. If I have a single packages file I would have a lot of bloat in each of my images, with unused modules.

当然你会膨胀,这就是微服务的美妙之处,That's the curse of Microservice .

Should I have a separate packages.json?

好吧,让我尝试专门解决这个问题。假设您的模块 A 使用 lodash.x.x.x。并且您想在模块 B 中使用 lodash.x+1.x.x。您确定 lodash.x+1.x.x 不向后兼容 lodash.x.x.x。所以,现在你被迫让 ModuleA 的代码与 lodash.x+1.x.x 兼容。如果上面所说的听起来是真的,我们将这些应用程序称为单体,而不是微服务。要回答你的问题,是的,你可能需要单独的 packages.json 除非你可以有一个具有共同依赖项的父 package.json 和带有它自己的 package.json 的子模块(我不是来自 node-land,所以不确定 package.json 是否存在)。 json 有这样的能力)

What I can't find is information on how I should organize and deploy my code. Should I have a different Node project (with separate packages.json) for each of my modules? Or should I have a single Node project for all my modules and deploy each of them individually?

我已经看到了这两种模式(单独的项目以及同一项目中的子模块)。我个人的意见(就其值(value)而言)是拥有单独的项目和单独的代码库,因为您的“模块”已经在讨论与语言无关的协议(protocol)-AMQP。明天,您可能想将 golang/kotlin 用于“ModuleB”(微服务 B,取决于您如何看待它:)),谁知道呢。

After I have my project organized, is there a script tool that will generate (build* and deploy) each of my modules to its own container?

这里要澄清的一件事是,一个微服务的开发和部署不应该强制您更改/部署其他微服务,只要它们之间的契约保持完整,否则它就是一个分布式单体(哇..我是不是只是发明一个新术语?太棒了!!)。当契约(Contract)发生变化时,您应该提升版本并让两个版本运行一段时间,直到所有相关方(您的其他微服务)都有机会升级。

关于node.js - 将我的 Node 应用程序转换为 Docker/Kubernetes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46975781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com