docker - 为什么我们需要在 PHP-FPM 和 Web 服务器容器中映射项目文件?
问题描述
我对所有这些 docker 的东西都很陌生,我有这个docker-compose.yml
文件:
fpm:
build:
context: "./php-fpm"
dockerfile: "my-fpm-dockerfile"
restart: "always"
ports:
- "9002:9000"
volumes:
- ./src:/var/www/src
depends_on:
- "db"
nginx:
build:
context: "./nginx"
dockerfile: "my-nginx-dockerfile"
restart: "always"
ports:
- "8084:80"
volumes:
- ./docker/logs/nginx/:/var/log/nginx:cached
- ./src:/var/www/src
depends_on:
- "fpm"
我很好奇为什么我需要将我的项目文件添加到fpm
容器中以及nginx
?
为什么仅将其添加到我的网络服务器还不够?Web 服务器是保存文件并处理请求的地方...
我相信这些信息对其他 docker 新手也很有用。
提前致谢。
解决方案
在您的 NGinx 容器中,您只需要静态数据,而在您的 PHP-FPM 容器中,您只需要 PHP 文件。如果您能够拆分文件,则两个站点中都不需要任何文件。
为什么仅将其添加到我的网络服务器还不够?Web 服务器是保存文件并处理请求的地方...
NGinx 处理来自用户的请求。如果请求是针对静态文件(在 NGinx 站点中配置),它会将内容发送回用户。如果请求是针对 PHP 文件(并且 NGinx 已正确配置为在该位置使用 FPM),它会将请求发送到 FPM 服务器(通过套接字或 TCP 请求),后者知道如何执行 PHP 文件(NGinx 不知道)。您可以使用 PHP-FPM 或您喜欢的任何其他解释器,但如果配置正确,这个解释器效果很好。
推荐阅读
- angular - 元素 mat-checkbox-ripple 被切断
- c# - 通过 REST 管理服务在 SMS_Collection 上执行 AddMembershipRule
- c++ - 将部分向量转换为字符串的最简单方法是什么?
- angularjs - 字符串在我使用 x 可编辑日期更新期间获取通过日期
- verilog - 如何在 Verilog 的 2D Net 中分配一行?
- flutter - Flutter - 在 Rive 周围创建小部件时出错
- javascript - Mocha - 在嵌套文件夹中添加帮助文件后找不到模块'./Collection/auth.js'
- amazon-s3 - Amazon s3 存储桶、CORS 问题、标头来源
- python - Sublime Text x Python - @property
- c# - 从 IDirect3DSurface 到 SoftwareBitmap 的无效转换