Nginx-在不同的docker容器中执行php文件

Nginx-在不同的docker容器中执行php文件

我正在为 php-fpm 和 nginx 使用自动化的 docker-image(https://hub.docker.com/r/tobi312/rpi-php/https://hub.docker.com/r/tobi312/rpi-nginx/) 在搭载有 libreelec 的树莓派上运行。

通过运行以下命令,php 容器成功启动并打开端口 9000:

docker run --name php -v /var/www/restTools:/var/www/html -d 3dd6ff8c0d58

之后我像这样启动了 nginx-container:

docker run --name nginx -d -p 8081:80 --link php:9000 -v /var/www/restTools:/var/www/html 0d90cc6eb00f

两个容器都在运行,但是 nginx 没有执行 php 文件,而只是提供下载。

过了一会儿,我尝试default.conf通过添加-v /var/www/.config/nginx:/etc/nginx/conf.d:ro命令将连接详细信息提交给 php-container。

摘录自default.conf

root /var/www/html;

location / {
    root /var/www/html;
    index index.html index.htm index.php;
}

location ~ \.php$ {
    root /var/www/html;
    fastcgi_pass php:9000;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_index index.php;
    fastcgi_param REMOTE_ADDR $http_x_real_ip;
    fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    include fastcgi_params;
    if (!-f $document_root$fastcgi_script_name) {
        return 404;
    }
}

我错过了什么?

答案1

您正在尝试使用docker的(已弃用!)“link”选项,这本身不是问题,但您必须尊重语法

--link <name or id>:alias

所以,你必须用你的

--link php:9000

正确的

--link php

您不需要别名,因为您为 fpm 容器命名的名称与您在 default.conf 中引用的名称相同。另一件重要的事情是将 php 文件夹挂载到 fpm 容器中,但您已经做对了。

相关内容