我对所有这些 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/