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

时间:2015-07-15 08:49:22

标签: php curl docker

我尝试从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

1 个答案:

答案 0 :(得分:1)

这是未经测试的,但松散地基于md5的优秀gist。要将此图像与nginx一起使用,该图像的Dockerfile如下所示:

<强> Dockerfile

FROM nginx:1.7
COPY php-fpm.conf /etc/nginx.conf.d/default.conf

您复制的nginx.conf示例可能如下所示。

<强> PHP-fpm.conf

server { 
  listen 80; 
  server_name localhost; 
  root /var/www/html; 

  index index.php; 

  location ~ [^/]\.php(/|$) { 
    fastcgi_split_path_info ^(.+?\.php)(/.*)$;
    if (!-f $document_root$fastcgi_script_name) {
      return 404;
    }

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO       $fastcgi_path_info;
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

    fastcgi_pass   fpmtest:9000;
    fastcgi_index  index.php; 
  } 
}

注意 fastcgi_pass 引用您的容器名称(fpmtest)。