Nginx、PHP-FPM、Docker - 113:主机无法访问

我很难理解我的错误在哪里。我查看了各种答案并尝试了补救措施,却发现他们的解决方案并没有解决我的问题。我已经将所有内容剥离到非常基础的内容,看看我是否可以得到一个基本的 PHP index.php 来呈现它自己。


这是我试图实现的核心目标:


我有 docker-compose 建立 1 个网络,以及连接到该网络的 2 个服务。一个服务是PHP-FPM,另一个服务是nginx,为PHP-FPM提供服务。每次我站起来时,无论我如何配置它,我都会得到一个502 Bad Gateway,当我检查 nginx 容器日志时,我会得到[error] 29#29: *1 connect() failed (113: Host is unreachable) while connecting to upstream。


./docker-compose.yml


version: "3.7"


networks:

    app:

        driver: bridge


services:

    php:

        image: php:7.4-fpm

        container_name: php

        volumes:

            - /home/admin/dev/test/php/www.conf:/usr/local/etc/php-fpm.d/www.conf

            - /home/admin/dev/test/src/:/var/www/html

        networks:

            - app


    nginx:

        image: nginx:alpine

        container_name: nginx

        depends_on:

            - php

        ports:

            - "80:80"

            - "443:443"

        volumes:

            - /home/admin/dev/test/src/:/usr/share/nginx/html

            - /home/admin/dev/test/nginx/conf.d/app.conf:/etc/nginx/conf.d/app.conf

        networks:

            - app


./php/www.conf -> /usr/local/etc/php-fpm.d/www.conf


[www]

user = www-data

group = www-data

listen = 0.0.0.0:9000

pm = dynamic

pm.max_children = 5

pm.start_servers = 2

pm.min_spare_servers = 1

pm.max_spare_servers = 3

./nginx/conf.d/app.conf -> /etc/nginx/conf.d/app.conf


server {

    listen 80;

    server_name localhost;    

    root /usr/share/nginx/html;

    index index.php;

    location / {

        try_files $uri $uri/ /index.php?$query_string;

    }


我相信我只是对 PHP-FPM 有一个重大误解,但也许还有其他原因。


故障排除期间的更新 我的想法是我的整体环境(即 Fedora 32)搞砸了。Docker 不支持开箱即用的 Fedora 32(必须更改 /etc/yum.repos.d 中的存储库设置才能使其正常工作 - 必须使用 Fedora 31 的存储库)。所以我决定启动一个 Ubuntu 20.0.4 VM 并在那里进行测试。现在 PHP-FPM 和 Nginx 正在对话;我从 PHP-FPM 容器收到响应!然而,现在即使只有基本脚本,我也会收到 404 错误,但这更接近我需要的位置......现在修复 404。


温温酱
浏览 122回答 2
2回答

拉丁的传说

最终更新(答案) 对于遇到此问题的任何人,截至今天为止,Docker 无法与 Fedora 32 一起使用(某些部分可以)。至少我没有时间进行故障排除/修补。这是一个新的 Fedora 32,没有安装以前的 docker/docker-compose 或任何东西。我架起了新的 Fedora 31 和 Ubuntu 20.0.4 只是为了验证我的“结论”。两者都开箱即用,无需额外调整。

蝴蝶不菲

您可以检查您的 php-fpm 服务是否正在运行吗?问题可能是 php-fpm 服务未运行,因此 nginx 无法连接到它
打开App,查看更多内容
随时随地看视频慕课网APP