假设我们不想让示例过于复杂,我们决定将外部存储用于数据库。此外,代码,配置文件等是docker镜像的一部分。
我的问题是,基于经验,良好实践和易用性。你们用来部署nginx,php-fpm堆栈的策略是什么?
我想到了三个选择:
创建一个Dockerfile,在其中有两个进程,然后只需创建一个在其上运行容器的pod。这会破坏one process per container。
创建一个包含两个容器的容器,每个容器包含一个进程。我发现了一些意见online,其中包含:
pod概念的主要动机是支持应用程序容器旁边的共同定位,共同管理的帮助程序容器。其中包括:日志记录或监控代理,备份工具,数据更改观察者,事件发布者,代理等。
如果你们可以根据你的经验说出一些相关内容并讨论哪种因为不同的原因更有意义,那就太好了。
谢谢大家!!
答案 0 :(得分:1)
具有完整服务的多容器容器,工作起来最简单,并且最符合设计原则,但具有缩放功能,适用于完整容器。在例如nginx与php进程相比使用非常少的CPU的情况下,这可能很麻烦:
因此,如果您的流程在资源使用方面极不平衡,那么在您的问题中在单个容器选项中的多个流程/程序中勾画时使用拆分方法的选项,通常可以更方便地进行自动扩展或资源管理。
然而,多进程容器是一个可以避免的,因为它违反了设计原则(灵活性较低,可能仍会出现库问题),但有时可能是不可避免的。例如,您需要记录旋转文件,并且容器中的进程必须知道这一点,然后在该容器中运行cron和另一个进程是非常必要的。因此,只有在您的应用程序和/或资源管理需要多进程容器时,才能使用它,否则请远离它:)