docker nginx和php,php无法连接到localhost
Posted
技术标签:
【中文标题】docker nginx和php,php无法连接到localhost【英文标题】:docker nginx and php, php cant connect to localhost 【发布时间】:2022-01-12 13:13:38 【问题描述】:我创建了一个对 8080:80 端口开放的 nginx 容器 所以我可以从主机访问它。
它连接到具有开放端口 9000:9000 的 php fpm 容器
nginx 用 php 成功运行。
我的问题是 php 试图访问 localhost:8080 但问题是 php localhost:8080 无效,需要连接到 nginx 容器。
这是我的 wordpress 网站上的错误: 你可以看到那里的东西很时髦...... 下面我将附上我的 docker-compose.yml
正在从http://localhost:8080/wp-content/themes/realtyspace/plugins/advanced-custom-fields-pro.zip下载安装包...
下载失败。 cURL 错误 7:无法连接到 localhost 端口 8080:连接被拒绝
docker-compose.yml
version: '2'
services:
my-nginx:
build: .
volumes:
- ./../:/var/www/html
ports:
- "8080:80"
links:
- my-php
my-php:
build:
context: .
dockerfile: Dockerfile.php-fpm
volumes:
- ./../:/var/www/html
ports:
- "9000:9000"
links:
- my-mysql
my-mysql:
image: mariadb:5.5
volumes:
- /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: wp
MYSQL_DATABASE: wp
MYSQL_USER: wp
MYSQL_PASSWORD: wp
【问题讨论】:
你是直接在 Linux 上运行它还是使用 Docker for Windows/Mac? 我在 Mac 上使用 docker,谢谢 所以你有一个循环引用,即 nginx 需要与 php 对话,而 php 需要与 nginx 对话? 【参考方案1】:使用docker的内网,配置php访问http://my-nginx:80
。
localhost
将解析为 php 容器本身的隔离 IP,而不是运行所有内容的 Docker 主机的 IP。并且试图通过http://dockerhost:8080
将导致不可移植的 docker-compose.yml 和 iptables 防火墙和 nat 规则的问题,这些问题比它们的价值更麻烦。使用 v2 compose 文件的价值在于,您可以在 Docker 内部获得一个隔离的网络,其中每个容器的 DNS 解析可以相互协作。
【讨论】:
但是 php 代码尝试访问该 url,只是因为 url 没有?如果我给它一个 example.com 的 url,它只会尝试从那里获取 no? 我不确定您正在运行什么 php 代码,您的问题需要更多详细信息。以上是关于docker nginx和php,php无法连接到localhost的主要内容,如果未能解决你的问题,请参考以下文章
无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库
我需要一个可以使用 php 连接到外部 MYSQL 数据库的 docker 映像
无法使用 django-channels 连接到 websocket,docker 上的 nginx 作为服务
无法使用 Nginx 反向代理连接到 Websocket 服务器