php - 为什么我们需要在 PHP-FPM 和 Web 服务器容器中映射项目文件?

标签 php docker nginx docker-compose fpm

我对所有这些 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 文件。如果您能够拆分文件,则两个站点中都不需要任何文件。

Why isn't it enough to add it just only to my webserver? A web server is a place that holds the files and handles the request...

NGinx 处理来自用户的请求。如果请求是针对静态文件(在 NGinx 站点中配置),它会将内容发回给用户。如果请求是针对 PHP 文件(并且 NGinx 已正确配置为在该位置使用 FPM),它将请求发送到 FPM 服务器(通过套接字或 TCP 请求),后者知道如何执行 PHP 文件(NGinx 不我知道)。您可以使用 PHP-FPM 或您喜欢的任何其他解释器,但如果配置正确,这个解释器会很好用。

关于php - 为什么我们需要在 PHP-FPM 和 Web 服务器容器中映射项目文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64884276/

相关文章:

php - 如何发送跨域ajax请求

php - Zend Framework 生成唯一的字符串

php - 在不杀死服务器的情况下更新用户排名的最佳方式

docker - 错误 : cannot find automatically a registry where to push images - Kamel Kubernetes

regex - Nginx 位置正则表达式,是否需要转义正斜杠?

php - SQL Buddy + https(ssl) + nginx 无法登录

php - 依次播放两个音频文件

docker - 命令 docker run 创建空容器

docker - 删除 Docker 镜像再次出现在新的构建命令中

ruby-on-rails - Rails 欢迎页面尝试在 Nginx + Passenger 中获取 rails.png 时出现错误 404