如何在两个docker容器之间进行cURL请求?

时间:2019-05-29 15:47:22

标签: php docker curl docker-compose php-7

我正在与docker合作处理不同的项目。我有一个nginx容器和两个php容器:一个用于php5.6中的projets,另一个用于php7.0项目。

我需要在两个PHP容器(从5.6到7)之间发出cURL请求,但我不知道如何实现。我尝试使用其他主机文件进行处理,但是我只会看到Connection超时或Connection被拒绝。

curl -X GET'hostUrl'

当hostUrl是php7 docker ip时,我得到连接超时,而当hostUrl是127.0.0.1时,我得到连接被拒绝错误。

它们在我的docker-compose中位于相同的网络中。

我该怎么解决我的问题?

谢谢

2 个答案:

答案 0 :(得分:0)

如果两个容器在同一个docker网络下;也就是说,您在一个docker-composer.yml文件中指定了两个容器,那么您应该能够仅使用容器的主机名与另一个容器进行通话。

如果两个容器不在同一个docker网络上,则可以使两个容器公开其专用端口并通过主机进行通信。

例如如果您有在端口9000上运行的容器“ A”和在端口8000上运行的容器“ B”;然后您想从“ B”卷入容器“ A”,则可以执行以下操作:

<?php

// Get the docker host machine's ip:
$host_ip = exec("/sbin/ip route|awk '/default/ { print $3 }'");

// Now curl 
// $container_a_url = "http://{$host_ip}:9000"

答案 1 :(得分:0)

容器的名称是容器的主机名。

如果您有名为webphp5webphp7的容器。您可以执行以下操作:

$ docker exec -it webphp5 bash #login into the container via console
$ curl -X GET 'webphp7'

这是卷曲您的webphp7容器,只要您要打开的端口都打开即可。