首页 > 解决方案 > 为什么我们需要在 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 新手也很有用。

提前致谢。

标签: docker

解决方案


在您的 NGinx 容器中,您只需要静态数据,而在您的 PHP-FPM 容器中,您只需要 PHP 文件。如果您能够拆分文件,则两个站点中都不需要任何文件。

为什么仅将其添加到我的网络服务器还不够?Web 服务器是保存文件并处理请求的地方...

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


推荐阅读