使用php5-fpm的docker容器连接主机nginx和msql

时间:2017-08-21 13:57:48

标签: php wordpress docker nginx containers

我有一个使用Nginx / MySQL和php5-fpm运行的传统Wordpress安装,我必须将其移至最近的具有php7-fpm的VPS。

我想利用已安装Nginx / MySQL的新主机VPS,并安装并使用容器来管理php5请求。

我从Docker Hub中提取了官方php5-fpm图片

docker pull php:5.6-fpm-alpine

...然后我运行图像重新映射端口9000,其中php5-fpm正在侦听并安装wordpress根文件夹(不确定)和mysql套接字,没有-d标志,以便查看日志:< / p>

docker run --name phpFpm5.6 -p 127.0.0.1:9999:9000 -v /home/ubuntu/www/html:/var/www/html -v /var/run/mysqld/mysqld.sock:/tmp/mysql.sock php:5.6-fpm-alpine

这是控制台日志:

[21-Aug-2017 12:36:19] NOTICE: fpm is running, pid 1
[21-Aug-2017 12:36:19] NOTICE: ready to handle connections
172.17.0.1 -  21/Aug/2017:12:37:09 +0000 "GET /index.php" 404
172.17.0.1 -  21/Aug/2017:12:39:30 +0000 "GET /index.php" 404

当我从浏览器请求索引页面时,我收到了404(未找到)响应。

Nginx指令:

location ~ \.php$ {
  try_files $uri =404;
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_pass 127.0.0.1:9999;
  fastcgi_index   index.php;
  include fastcgi_params;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

任何线索都非常感激。

提前致谢。

最佳, 卢卡

1 个答案:

答案 0 :(得分:0)

将容器视为远程服务器。现在,您正在执行的端口映射9999:9000告诉docker将主机上的端口号9999连接到容器的端口号9000

现在在你的nginx指令中,在容器内运行的那个,你在9999重定向。相反,它应该是9000

根据您的方案,所有资源都由端口9999上的容器提供,但主机无法访问容器的端口9999