В настоящее время я работаю на сервере, написанном на C ++, который использует cpprestsdk
.cpprestsdk
использует boost::asio
.Большая часть моей разработки сделана на Mac, а не в контейнере Docker.Когда приходит время развертывать новую версию, я собираюсь запустить ее в контейнере Docker, который затем будет запущен на экземпляре EC2.
Я недавно добавил в поддержку, чтобы получить файлы конфигурации от S3.Для этого я использую cpprestsdk
http_client
.Внутри кода для отправки запросов он будет делать asio
async_resolve
.Это не удастся с ошибкой
Хост не найден (авторизованный)
Я определил, что если я изменю базовый образ на ubuntu:16.04
, то он будет работать правильно,busybox
и alpine
приведут к этой ошибке.Я также обнаружил, что если я использую curl
, то он может загружать данные с конечной точки, которую я использую.Однако, если я использую nslookup
, он не может ничего найти.Например, запуск nslookup
на google.com приводит к
nslookup: невозможно разрешить '(null)': имя не разрешается
Я попыталсянесколько вещей, основанных на том, что я нашел в Интернете, например, использование numeric_service
с конструктором query
, использование «http» в качестве порта вместо «80» (я также делал версии SSL).Я также пытался запустить контейнер с DNS-сервером узла.
Например, это одна из ссылок, которые я рассмотрел.
boost asio: "host not found (authorative) "
До сих пор я не смог выяснить, как заставить это работать должным образом.
Обратите внимание, что в качестве запасного варианта я могу использовать ubuntu:16.04
в качествебазовое изображение.Я бы предпочел меньший размер busybox
или alpine