我应该为共享的Docker依赖项提供服务吗?

我有3个不同的服务,使用GraphicsMagick作为依赖,我刚刚开始使用Docker。 所以我想知道,我应该为GraphicsMagick(也许使用PHP)做一个单独的光API,并把它放在一个单独的Docker容器? 由于GraphicsMagick只是一个可执行文件。

或者它会很慢,最好的方法是将GraphicsMagick作为每个服务容器的依赖项安装?

谢谢!

正如评论和你原来的问题中提到的,这里有两种方法。 一种是将GraphicsMagick安装在基本映像或个别服务映像中。 另一种方法是构build一个专用于GraphicsMagick的单独服务(一种工作或图像操作API)。 我想这个答案将取决于你现在对你最重要的利弊。

基本图像中的GraphicsMagick具有易于实现的优点。 你不需要额外构build一些东西。 GraphicsMagick二进制文件不应该太麻烦安装,可能只会增加一个MB大小到您的最终结果图像。

使用GraphicsMagick构build一个单独的API服务映像具有开发时间和服务复杂性的开销。 您可能还需要使用此模型实现某种服务发现,以便您的其他服务映像知道如何获得此新API。 尽pipe如此,这将是更具扩展性的模式。 根据负载的位置,这可以帮助单独扩展其他服务容器,并且还可以在单​​独的主机上运行,​​特别是在图像操作可以使用CPU并且挨饿其他服务的情况下。

所以我会问自己这些问题:

  • 你能承担额外的开发时间吗?
  • 应用程序是否需要这种单独的可伸缩性?
  • pipe理可能还需要一些服务发现的附加服务是否没有问题?

如果所有这些问题都可以回答“是”,那么您可能会为此而单独build立一个单独的服务。 Docker绝对适合面向服务的体系结构,这可能是构build应用程序的更合适的方式。 但是对于“正常工作”并且花费最less的时间来执行的东西,可以说很多,特别是如果它能在很长时间内正常工作的话。