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

Har*_*per 5 php nginx docker 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"
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么我需要将项目文件添加到容器中fpm以及nginx

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

我相信这些信息对其他 Docker 新手也很有用。

提前致谢。

emi*_*emi 7

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

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

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