我在一个容器中运行一个简单的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运行另一个容器?
发布于 2016-10-11 15:28:25
@nwinkler在评论中是对的,推荐是有益的。将应用程序解耦到多个容器的两个优点是:
的确,如果没有发生任何更改,那么docker会进行散列检查,并且不会构建映像的层,但这仅限于层结构(如果层X更改,则X之上的所有层都将生成)。这意味着当你的图像开始变大时,它会开始变得痛苦。
当您连接到您的ngxinx时,您非常肯定您正在做的任何更改不会导致您的php容器中的更改,这始终是一个很好的实践。
您还需要10个Redis,很好,让我们再运行10个Redis容器。
通常,我会为任何场景选择一个基本映像的dockerfile,在您的例子中,这是您的所有三个容器(php、redis和nxginx)共享的东西(第三方库、工具等等)。然后用三个码头文件来构建每个图像。然后是一个用于在容器中运行映像的bash或docker-compose.yml脚本。
https://stackoverflow.com/questions/39978962
复制相似问题