【问题标题】:PHP-PM Container does not answer request from different Docker containerPHP-PM 容器不响应来自不同 Docker 容器的请求
【发布时间】:2022-12-17 19:00:03
【问题描述】:

我有一个简单的 docker-compose 设置,带有一个 nginx 代理和一个运行 PHP-PM 的容器:

version: "3.5"

services:
    proxy:
        image: nginx
        depends_on:
            - php_pm
    php_pm:
        build: .

php_pm 的 Dockerfile 从 https://github.com/php-pm/php-pm-docker/blob/master/build/Dockerfile-standalone 修改为使用 PHP 8.1:

FROM composer as composer

ARG version=2.4.0
ARG http_version=dev-master
RUN docker-php-ext-install -j$(nproc) pcntl
RUN mkdir /ppm && cd /ppm && composer require php-pm/php-pm:${version} && composer require php-pm/httpkernel-adapter:${http_version}

FROM php:8.1

RUN apt update && apt install -y git libicu-dev libpng-dev libzip-dev procps xmlsec1 zip zlib1g-dev
RUN docker-php-ext-install -j$(nproc) gd intl mysqli opcache pcntl pdo_mysql zip

EXPOSE 81

COPY --from=composer /ppm /ppm

WORKDIR /var/www

ENTRYPOINT ["/ppm/vendor/bin/ppm", \
    "start", \
    "--static-directory=public/", \
    "--app-env=dev", \
    "--port=81", \
    "--socket-path=/ppm/run", \
    "--pidfile=/ppm/ppm.pid", \
    "--debug=1"]

现在,如果我执行到 php_pm 容器并使用 curl localhost:81,我会收到来自 PHP-PM 的响应(我认为这就是标头 Server: ReactPHP/1 的内容)。

现在我的问题是:当我执行到容器 proxy 并尝试卷曲 php_pm 容器时,我得到了这个:

curl php_pm:81
curl: (7) Failed to connect to php_pm port 81: Connection refused

为什么当我在 php_pm 容器中时 PHP-PM 在端口 81 上应答,而当我在 proxy 容器中时却没有?通常这不是问题,例如nginx 和另一个运行 pm2 的容器。 PHP-PM 是否没有在我的docker-compose.yaml 文件定义的网络中完全保留端口 81?

【问题讨论】:

    标签: docker php-pm


    【解决方案1】:

    您必须在您的ENTRYPOINT 上设置--host=0.0.0.0,否则容器中的进程将默认监听127.0.0.1:81(即localhost:81),并且只能从同一容器内访问。

    ENTRYPOINT ["/ppm/vendor/bin/ppm", 
        "start", 
        "--static-directory=public/", 
        "--app-env=dev", 
        "--host=0.0.0.0", 
        "--port=81", 
        "--socket-path=/ppm/run", 
        "--pidfile=/ppm/ppm.pid", 
        "--debug=1"]
    

    当您从 pph_pm 容器中使用 curl 时,它可以工作,因为您从 localhost 到达服务器,但是来自另一个容器的 curl 将无法工作,因为您正试图从不同的主机到达服务器。使用0.0.0.0:81 将允许您从另一个容器访问服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      相关资源
      最近更新 更多