了解Docker最佳实践和运行web服务器



我在运行一个简单的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中运行另一个容器?

@nwinkler在评论中是对的,这个建议是好的。将应用程序解耦到多个容器中的几个优点是:

  1. 构建时间

docker确实会进行哈希检查,如果没有发生任何更改,则不会构建映像的层,但这仅限于层结构(如果层X更改,则将构建X以上的所有层)。这意味着当你的图像开始变大时,它会开始变得痛苦。

  • 集装箱被隔离
  • 当你连接到你的ngxinx时,你很确定你所做的任何改变都不会引起你的php容器的改变,这总是一个很好的做法。

  • 你需要10个Redis容器,很好,让我们再运行10个Redis容器。

    一般来说,我会为任何场景的基本图像选择dockerfile,在您的情况下,这是您的三个容器(php, redis &nxginx)共享(第三方库,工具等)然后是三个dockerfile,用于构建每个映像。然后使用bashdocker-compose.yml脚本在容器内运行图像。

    最新更新