代码之家  ›  专栏  ›  技术社区  ›  Mobile Ben

在基于busybox或alpine映像的Docker容器中运行时,找不到asio主机(权威)

  •  0
  • Mobile Ben  · 技术社区  · 6 年前

    我现在正在使用C++编写的服务器,它使用 cpprestsdk . boost::asio . 我的大部分开发是在Mac上完成的,而不是在Docker容器中。当需要部署一个新版本时,我构建了一个Docker容器,该容器将在EC2实例上运行。

    cpprestsdk软件包 http_client . 在发送请求的代码中,它将执行 asio async_resolve . 此操作将失败并出现错误

    我已经决定如果我把基础图像改成 ubuntu:16.04 ,则它将正常运行。 busybox alpine 会产生那个错误。我还发现如果我用 curl 然后它可以从我使用的端点下载数据。但是如果我使用 nslookup 在谷歌网站产量

    我尝试了一些基于我在网上发现的东西,比如使用 numeric_service 和一个 query ,使用“http”作为端口而不是“80”(我也做了SSL版本)。我也试着用主机的DNS运行容器。

    例如,这是我回顾的一个链接。

    boost asio: "host not found (authorative)"

    到目前为止,我还没有找到如何让它正常工作。

    请注意,作为后备方案,我可以使用 ubuntu:16.04版本 busybox(软件名) 阿尔卑斯山

    0 回复  |  直到 6 年前