Docker服务分离

时间:2016-10-06 18:50:52

标签: php nginx docker containers docker-compose

我不确定如何使用docker正确分离服务器上的服务。我有一个用NodeJS编写的应用程序和两个用PHP编写的应用程序。我使用NGINX作为web服务器/反向代理,使用MySQL作为我的数据库。我不太确定哪个docker容器应该处理哪个任务以及存储应用程序文件的位置(js,php,静态内容如css和jpg)。

我有以下选项(省略MySQL容器)。每个矩形都是一个泊坞窗图像(“服务器”和“服务器FS”矩形除外)。

选项1:一个处理静态内容并将请求传递给PHP-FPM和NodeJS的NGINX容器。应用程序文件将安装到docker镜像中。

Option 1

选项2:一个NGINX容器充当反向代理,捆绑不同的服务。由于每个应用程序都处理自己的配置(如路由重写和处理静态内容),因此应用程序本身更具可移植性。

Option 2

选项3:一个NGINX容器充当反向代理,如选项2所示。对于每个PHP应用程序,NGINX网络服务器和PHP-FPM模块都包含在一个泊坞窗映像中。

Option 3

选项4:一个NGINX容器再次作为反向代理。应用程序文件捆绑在各自的泊坞窗映像中。

enter image description here

是否有最佳做法如何将服务分成docker镜像?选项4似乎是最便携和最易部署的,因为应用程序文件包含在映像中。选项1到3更易于在开发中使用,因为每次文件更改时都不需要重建映像。选项3似乎是我的最佳选择,但我也知道一个docker容器应该只包含一个服务(PHP-FPM NGINX)。

是否有最佳实践,或者每个人都有自己的决定如何处理它。我想知道你的经历。

1 个答案:

答案 0 :(得分:0)

如果您的目标是生产系统,我建议使用图1。

它允许您水平扩展服务(nodejs,php-fpm),它可以提供一些故障转移。它也是用Swarm或Kubernetes等集群管理器构建的方式。在您的方案中,您不应该为每个主机提供多个nginx。