【问题标题】:How make cURL request between two docker container?如何在两个 docker 容器之间发出 cURL 请求?
【发布时间】:2019-10-15 06:54:15
【问题描述】:

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

我需要在我的两个 php 容器(从 5.6 到 7)之间发出 cURL 请求,但我不知道如何制作它。我已经尝试使用不同的主机文件,但我只得到一个连接超时或连接被拒绝。

curl -X GET 'hostUrl'

当 hostUrl 是 php7 docker ip 时,连接超时,当 hostUrl 为 127.0.0.1 时,出现连接被拒绝错误。

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

我可以做些什么来解决我的问题?

谢谢

【问题讨论】:

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


    【解决方案1】:

    如果两个容器在同一个docker网络下;即您在一个 docker-composer.yml 文件中指定了两个容器,那么您应该能够简单地使用容器的主机名与另一个容器通信。

    如果两个容器不在同一个 docker 网络上,你可以让两个容器都暴露它们的私有端口并通过主机进行通信。

    例如如果您有一个容器“A”在端口 9000 上运行,而容器“B”在端口 8000 上运行;并且你想从“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"
    

    【讨论】:

      【解决方案2】:

      你的容器的名字就是容器的主机名。

      如果您有名为 webphp5webphp7 的容器。你可以这样做:

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

      这是 curl 的 webphp7 容器,前提是您尝试访问的端口处于打开状态。

      【讨论】:

        猜你喜欢
        • 2023-02-09
        • 1970-01-01
        • 1970-01-01
        • 2018-05-26
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 2016-12-27
        • 1970-01-01
        相关资源
        最近更新 更多