从主机到容器的cURL可以工作,但从容器到容器的cURL不能工作

从主机到容器的cURL可以工作,但从容器到容器的cURL不能工作,curl,docker,digital-ocean,Curl,Docker,Digital Ocean,标题几乎说明了一切,但让我给出一些背景 我有一个MySQL实例在一个容器中运行,一个API在另一个容器中运行,一个脚本在第三个容器中运行。脚本命中(或者应该命中)第二个脚本中运行的API。这些都在同一台物理机器上(在DigitalOcean上) 我在Dockerfile中为API公开了我们使用的端口(8080),并在运行时为API公开了使用-p8080:8080。我有正确指向API IP的脚本 在其他环境(AWS、RaspPI)中,此设置工作正常。但是,在DigitalOcean上,它根本不起作

标题几乎说明了一切,但让我给出一些背景

我有一个MySQL实例在一个容器中运行,一个API在另一个容器中运行,一个脚本在第三个容器中运行。脚本命中(或者应该命中)第二个脚本中运行的API。这些都在同一台物理机器上(在DigitalOcean上)

我在Dockerfile中为API公开了我们使用的端口(8080),并在运行时为API公开了使用
-p8080:8080
。我有正确指向API IP的脚本

在其他环境(AWS、RaspPI)中,此设置工作正常。但是,在DigitalOcean上,它根本不起作用。我的脚本试图访问数据库API的尝试完全失败了

奇怪的是,从主机到API端点的卷曲工作得很好,所以API本身也在工作。但是,使用docker exec从脚本docker容器内部进行卷曲每次都会导致超时,这与我在脚本中遇到的问题相同

我唯一的两个猜测是,这与Docker液滴的DigitalOcean配置设置有关,或者Docker具有我缺少的容器间通信配置

TL;DR:cURL来自主机->Docker容器API工作。从同一台机器上的Docker容器卷曲->Docker容器API不卷曲


不管怎样,如果你们中有人想要更多的信息,不要犹豫,问:)干杯

当您说
脚本试图访问数据库API的尝试完全失败时
,您能否启用CURLOPT_VERBOSE并向我们展示curl所说的内容?抱歉,这里的描述非常糟糕。该脚本使用npm请求模块(node)——当我说它失败时,我的意思是它超时了。我将尝试使用verbose cURL,稍后在这里发布。当尝试访问另一个容器时,您使用什么ip或主机名?
sudo docker exec jolly\u montalcini cURL-verbosehttp://db.xxxxx.co:8080/races/status/0 *DNS缓存中找不到主机名%Total%已接收%Xferd平均速度时间当前值Dload上载总花费的左速度0 0 0 0 0 0 0--:::::-->::--0*正在尝试xxx.xx.xxx.xxx。。。0 0 0 0 0 0 0--::----0:01:30--::--0
上面的内容可能基本上是无用的,但这是冗长的卷曲-基本上它显示了相同的,完全超时@rckrd