Php 在docker容器中,无法从内部连接到本地apache 问题

Php 在docker容器中,无法从内部连接到本地apache 问题,php,docker,docker-compose,Php,Docker,Docker Compose,我通过浏览器访问页面http://localhost,我看到了public文件夹的内容。 问题是,当我运行测试时,curl不会连接到消息: cURL错误7:无法连接到本地主机端口80:连接被拒绝(请参阅)(GuzzleHttp\Exception\ConnectException) 我通过命令运行测试: docker compose运行——rm php供应商/bin/behat docker-compose.yml 我的环境 Mac OSX 10.11.6 mac Docker:17.03.1

我通过浏览器访问页面
http://localhost
,我看到了
public
文件夹的内容。 问题是,当我运行测试时,curl不会连接到消息:

cURL错误7:无法连接到本地主机端口80:连接被拒绝(请参阅)(GuzzleHttp\Exception\ConnectException)

我通过命令运行测试:

docker compose运行——rm php供应商/bin/behat

docker-compose.yml 我的环境
  • Mac OSX 10.11.6
  • mac Docker:17.03.1-ce-mac12(17661)
总结 我可能在配置中添加了一些内容?你能帮我找到问题吗


谢谢。

Docker添加了一个名为
docker0
的默认网络,您的主机使用IP地址
172.17.0.1
。您可以通过在主机中键入
ifconfig
来测试这一点

如果您运行一个新容器而不指定其他网络,则它会连接到具有IP地址的默认网络:
172.17.0.X
。这样,如果要从容器中访问主机上运行的web服务器,请尝试:

curl http://172.17.0.1:[port]

Docker添加了一个名为
docker0
的默认网络,您的主机使用IP地址
172.17.0.1
。您可以通过在主机中键入
ifconfig
来测试这一点

如果您运行一个新容器而不指定其他网络,则它会连接到具有IP地址的默认网络:
172.17.0.X
。这样,如果要从容器中访问主机上运行的web服务器,请尝试:

curl http://172.17.0.1:[port]

您是否尝试过使用运行容器的物理计算机的
curl http://$ip\u address\u?看起来“localhost”的解析有问题。它在容器上解析到哪个地址?主机上的哪个主机?主机名“localhost”是特殊的,这可能是此场景中问题的一部分。如果可以,请尝试使用另一个,看看它是否正常工作。您是否尝试过使用运行容器的物理机器的
curl http://$ip\u address\u?看起来“localhost”的解析有问题。它在容器上解析到哪个地址?主机上的哪个主机?主机名“localhost”是特殊的,这可能是此场景中问题的一部分。如果可以,试着用另一个,看看它是否能正常工作。不知道默认值。我想,如果我在容器内运行命令,比如
docker compose run--rm-php-php-vendor/bin/behat
(在容器php上,我也有apache),它将调用这个容器的地址并连接到apache。使用此IP,有帮助。不知道默认设置。我想,如果我在容器内运行命令,比如
docker compose run--rm-php-php-vendor/bin/behat
(在容器php上,我也有apache),它将调用这个容器的地址并连接到apache。使用此IP,有帮助。