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

时间:2017-04-21 11:25:42

标签: docker dockerfile

我正在学习docker。有人告诉我为节点服务创建docker镜像的最佳做法是什么。我应该为整个项目创建单个docker镜像,还是为每个api实现一个docker镜像。应该是最好的方法和原因,请给出解释。

2 个答案:

答案 0 :(得分:1)

  

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

是的!如果您认为可以定义项目的不同组件,请将它们分开并使用不同的“精简”容器。我建议你看一下JérômePetazzoni的演讲:Implementing Separation of Concerns with Docker and Containers

幻灯片32-34中的

膨胀容器

  • 容器具有生产所需的所有软件
  • 在开发模式下,只启动基本流程
  • 在产品模式下,其他流程也会运行
  • 问题:
    • 更大的容器
    • 行为可能不同(因为额外的流程)
    • 容器之间重复的额外进程
    • 很难单独测试这些额外的进程

精益容器

<强>原理

  • “做一件事,做得好”
  • 组件本身的一个容器
  • 一个用于记录的容器
  • 一个用于监控的容器
  • 一个备份容器
  • 一个用于调试的容器(需要时)

答案 1 :(得分:0)

为不同的API创建一个单独的图像不是一个好习惯。为什么?因为每个API都有它自己的需求,它有自己的环境变量,可能是不同的URL来访问不同的数据库等等......即使dockerfile对于几乎所有的API容器都是相同的,你也可能有不同的需求。 docker的用处是它可以在构建图像时保存图层,这些图层是共享和缓存的,因此它们可以由基于相同图层的不同服务重用。

我的建议如下:

•如果您正在为每个API设置一个具有独特角色的微服务架构,请为每项服务创建单独的图片

•如果您不在乎并且遇到整体架构,请使用一个单个图像