该容器是在部署应用程序时生成的。
看起来它的目的是在模块之间共享依赖关系。
看起来它是作为一个容器启动的,但是显然没有任何东西在运行,有点像init容器。
控制台表示,当使用相应的wolkenkit start和wolkenkit stop命令时,它会启动/停止该组件。
在启动时:

关机时:

当您使用docker ps时,无法找到该容器:

有人能解释一下这些组件吗?
发布于 2019-04-05 06:37:22
启动沃肯吉应用程序时,应用程序将被装箱在多个Docker容器中,然后与提供基础设施的其他几个容器一起启动这些容器,如数据库、消息队列、.
将应用程序分成几个Docker容器的原因是,wolkenkit构建在CQRS模式之上,这意味着将应用程序的读取端与应用程序的写入端分离开来,因此读取端有一个容器,写入端有一个容器(实际上还有几个,但您可以看到图片)。
现在,由于您可以在Linux以外的操作系统上进行开发,wolkenkit应用程序可能在与开发它时不同的操作系统下运行,就像在Docker中一样,它始终是Linux。这意味着start命令不能简单地将node_modules文件夹复制到容器中,因为它们可能包含二进制模块,然后这些模块是不兼容的(假设安装在主机上,但在Docker中运行在Linux上)。
为了避免这里的问题,wolkenkit在启动容器内的应用程序时运行一个npm install。现在的问题是,如果wolkenkit在每一个容器中都这样做,那么启动就会非常慢(这并不是地球上最快的事情,因为所有的码头建筑和启动都是在引擎盖下发生的)。因此,沃尔肯基特试图尽可能地优化这一点。
这里的一个概念是只运行npm install一次,在自己的容器中运行一次。这是您遇到的node-modules容器。然后将此容器作为卷链接到包含应用程序代码的所有容器。这样,您只需要运行npm install一次,但是多个容器可以使用此命令的结果。
因为这个容器现在包含数据,但是没有代码,它只需要在那里,它实际上什么也不做。这就是为什么要创建它,但不运行。
我希望这能让事情更清楚一些,我能够回答你的问题:-)
PS:请注意,我是wolkenkit的核心开发者之一,所以请接受我的回答。
https://stackoverflow.com/questions/55529330
复制相似问题