我处于在单个容器中运行简单的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.
最佳答案
@nwinkler在评论中是正确的,推荐是好的.将应用程序解耦到多个容器中的几个优点是:
>建立时间
的确,如果未发生更改,则docker会进行哈希检查并且不构建映像的层,但这仅限于层结构(如果X层发生更改,则将构建X之上的所有层).这意味着当图像开始变大时,它将开始变得痛苦.
>容器是隔离的
当您连接到ngxinx时,您可以确定您所做的任何更改都不会引起PHP容器中的更改,并且这始终是一个好习惯.
>可扩展性
您还需要十个Redis,好的,让我们再运行十个Redis容器.
通常,在任何情况下,我都会为基础映像选择一个dockerfile,在您的情况下,这就是您的三个容器(PHP,redis和nxginx)共享的所有容器(第三方库,工具等).然后三个dockerfile用于构建每个映像.然后是bash或docker-compose.yml脚本,用于在容器内运行图像.