gpt4 book ai didi

docker - DNS 在两个链接的 docker 容器之间不起作用 - getaddrinfo EAI_AGAIN 错误

转载 作者:行者123 更新时间:2023-12-02 19:30:32 25 4
gpt4 key购买 nike

我正在尝试设置一个临时环境,我可以在其中对 Web 应用程序执行 AT。为了实现这一点,我有 3 个 docker 容器:

容器 1:数据库 (mongo_local)
docker build -t mongo_local ./test/AT/mongo
docker run --name mongo_local -d -p 27017:27017 mongo_local

容器 2(Web 应用程序):
docker run --name mywebapp_local -d -p 4431:4431 --link mongo_local -v /applicationdata:/applicationdata mywebapp
容器 3( Newman 测试运行器):
docker build -t newman_runner ./test/AT/newman
docker run --name newman_runner --link mywebapp_local newman_runner

Web 应用程序可以使用以下连接字符串成功访问数据库:mongodb://mongo_local:27017/mydb ,请注意,我可以引用 mongo_local,我不必为 mongo_local 容器指定 IP 地址。

newman 测试运行程序针对 Web 应用程序运行 postman 测试,并且当我在 URL 中指定 mywebapp_local 容器的 IP 地址(即 10.0.0.4)时,所有测试都成功执行,但是如果我在 URL 中指定名称 mongo_local 则它不起作用。

因此https://mywebapp_local/api/v1/method1不起作用,但 https://10.0.0.4/api/v1/method1确实有效。

我得到的错误是
getaddrinfo EAI_AGAIN mywebapp_local mywebapp_local:443 at request ...
我试过在 docker run 命令中使用 -add-host ,这没有什么区别。有什么明显的我做错了吗?

最佳答案

正如您设置的那样,newman_runner容器不 --link mongo_local这就是为什么它看不到它。

一段时间以来,Docker 一直不鼓励明确的容器间链接。如果您创建一个 Docker 内部网络并将每个容器附加到它

docker network create testnet
docker run --net testnet ...

它将能够通过 --name 查看同一网络上的所有其他容器没有明确的 --link .

关于docker - DNS 在两个链接的 docker 容器之间不起作用 - getaddrinfo EAI_AGAIN 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51649566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com