为我的节点项目的每个服务创builddocker文件是否可行?

我正在学习docker。有人告诉我为节点服务创builddocker镜像的最佳做法是什么。我应该为整个项目创build一个docker镜像还是为每个api实现一个docker镜像。最好的方法是什么?说明。

为我的节点项目的每个服务创builddocker文件是否可行?

是! 如果您认为可以定义项目的不同组件,请将其分开并使用不同的“精简”容器。 我build议你看看JérômePetazzoni的这个演示文稿: 使用Docker和Containers实现分离问题


从幻灯片32-34:

膨胀的容器

  • 容器拥有生产所需的全部软件
  • 在开发模式下,只有重要的进程开始
  • 在prod模式下,还会运行其他进程
  • 问题:
    • 更大的容器
    • 行为可能不同(由于额外的过程)
    • 在容器之间重复的额外stream程
    • 很难单独testing这些额外的过程

精益集装箱

原理

  • “做一件事,做好事”
  • 组件本身的一个容器
  • 一个容器用于logging
  • 一个容器用于监视
  • 一个容器用于备份
  • 一个用于debugging的容器(当需要时)

为不同的API创build一个单一的图像是不好的做法。 为什么? 因为每个API都有它自己的需求,它是自己的环境variables,也许不同的URL来访问不同的数据库,所以…即使dockerfile几乎所有的API容器相同,你可能有不同的需求。 docker工的事情是,当你build立你的形象,它保存图层,这些图层共享和caching,以便他们可以重复使用不同的服务基于相同的图层。

我的build议如下:

•如果要为每个API实施具有独特angular色的微服务体系结构 ,请为每个服务创build单独的映像

•如果您不在意,并且您正在使用单一的图像 ,则可以使用单个图像