gpt4 book ai didi

php - 为什么官方 Docker 镜像中的 php-fpm 对我不起作用?

转载 作者:可可西里 更新时间:2023-11-01 00:30:58 25 4
gpt4 key购买 nike

我尝试从 php:fpm 运行一个新容器:

docker run --name fpmtest -d -p 80:9000 php:fpm

默认情况下,它在其 Dockerfile 中公开端口 9000 .

然后我登录容器并创建 index.html 文件:

$ docker exec -i -t fpmtest bash
root@2fb39dd6a40b:/var/www/html# echo "Hello, World!" > index.html

在容器内,我尝试使用 curl 获取此内容:

# curl localhost:9000
curl: (56) Recv failure: Connection reset by peer

在容器外我得到另一个错误:

$ curl localhost
curl: (52) Empty reply from server

最佳答案

我认为您误解了该容器的用途。没有网络服务器在监听。

容器的 9000 端口是一个 socket,web 服务器可以使用它与 php 解释器进行通信。

the parent folder在您链接的 git 存储库中,还有另一个运行 apache 容器的文件夹,它似乎与 fpm 容器一起工作。

我想在你的情况下你应该这样做:

docker run -it --rm --name my-apache-php-app -v /PATH/TO/WEB-FILES:/var/www/html php:5.6-apache

这是使用 php docker 镜像的官方文档:

https://registry.hub.docker.com/_/php/


举个例子,假设我们想使用那个 php-fpm 容器与另一个运行 nginx 网络服务器的容器

首先,创建一个包含 php 文件的目录,例如:

mkdir content
echo '<?php echo "Hello World!"?>' > content/index.php

然后,创建另一个目录 conf.d,并在其中创建一个包含以下内容的 default.conf 文件:

server {
server_name localhost;

root /var/www/html;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ /index.html;
}

location ~ \.php$ {
try_files $uri =404;
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_pass fpmtestdocker:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

注意 fastcgi_pass 参数值。那么,在这种情况下,我们先运行:

docker run --name fpmtest -d -p 9000:9000 -v $PWD/content:/var/www/html php:fpm

然后:

docker run --name nginxtest -p 80:80 --link fpmtest:fpmtestdocker -v $PWD/content:/var/www/html -v $PWD/conf.d:/etc/nginx/conf.d -d nginx

就是这样。我们可以去http://localhost并查看结果。

考虑到:

  • 两个容器都需要访问相同的/var/www/html 目录。他们共享应用文件的路径。
  • --link fpmtest:fpmtestdocker 参数,以便从 nginx 容器中可以看到 fpm 容器。然后我们可以在 nginx 服务器配置中添加 fastcgi_pass fpmtestdocker:9000; 配置指令。

关于php - 为什么官方 Docker 镜像中的 php-fpm 对我不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31425670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com