我正在与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中位于相同的网络中。
我该怎么解决我的问题?
谢谢
答案 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)
容器的名称是容器的主机名。
如果您有名为webphp5
和webphp7
的容器。您可以执行以下操作:
$ docker exec -it webphp5 bash #login into the container via console
$ curl -X GET 'webphp7'
这是卷曲您的webphp7
容器,只要您要打开的端口都打开即可。