Nginx,PHP-FPM,Docker - 113:主机不可访问

Nginx, PHP-FPM, Docker - 113: Host is unreachable

我很难理解我的错误在哪里。我查看了各种答案并尝试了补救措施,却发现他们的解决方案并没有解决我的问题。我已经把所有东西都剥离到非常基础的东西,看看我是否可以得到一个基本的 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。配置文件

server {
    listen 80;
    server_name localhost;    
    root /usr/share/nginx/html;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

./src/index.php -> (php)/var/www/html && (nginx)/usr/share/nginx/html (仅供参考)

<?php
phpinfo();

Docker: Docker version 19.03.12, build 48a66213fe Docker-撰写:docker-compose version 1.25.4, build unknown 环境:Linux localhost.localdomain 5.7.14-200.fc32.x86_64 #1 SMP Fri Aug 7 23:16:37 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux(Fedora 32 工作站)

我相信我只是对 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。

准确的错误是:[error] 30#30: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream

你能检查一下你的 php-fpm 服务是否是 运行 吗? 问题可能是 php-fpm 服务不是 运行 因此 nginx 无法连接到它

最终更新(答案) 对于遇到此问题的任何人,截至今天,Docker 无法与 Fedora 32 一起使用(某些部分可以)。至少在我 troubleshoot/patch 可用的时间里不会。这是一个全新的 Fedora 32,之前没有安装任何 docker/docker-compose 或任何东西。

我站了一个新的Fedora 31和Ubuntu 20.0.4来验证我的“结论”。两者都开箱即用,无需额外调整。