【发布时间】: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?
【问题讨论】: