我在一个容器中运行一个简单的PHP7.0,Redis和NGINX服务器。
这意味着我将php7.0-fpm
和 ngxinx
和 redis
作为服务运行。
但在我正在阅读的最佳实践中:
# Run only one process per container
In almost all cases, you should only run a single process in a single container.
Decoupling applications into multiple containers makes it much easier to scale horizontally and reuse containers.
If that service depends on another service, make use of container linking.
这是否意味着最好使用PHP7.0和应用程序运行一个容器,使用nginx运行另一个容器,使用redis运行另一个容器?</ p>
答案 0 :(得分:3)
@nwinkler在评论中是对的,推荐是好的。将应用程序分离到多个容器中的几个优点是:
确实,如果没有发生任何变化,docker会进行哈希检查,并且不会构建图像的图层,但这仅限于图层结构(如果图层X更改了将构建X以上的所有图层)。这意味着当你的图像开始变大时,它会开始变得痛苦。
当您附加到ngxinx
时,您非常确定您所做的任何更改都不会导致php
容器发生变化,这始终是一种很好的做法。
你还需要十个Redis
,好的,让我们再运行十个Redis
容器。
一般情况下,我会为任何场景寻找基础图像的dockerfile,在你的情况下,我会为你的所有三个容器(php
,redis
&amp; {{1} })share(第三方库,工具等)。然后三个dockerfiles用于构建每个图像。然后是nxginx
或bash
脚本,用于在容器内运行图像。