boost :: asio Хост не найден (авторизованный) при запуске в Docker-контейнере на основе busybox или альпийских образов - PullRequest
0 голосов
/ 26 октября 2018

В настоящее время я работаю на сервере, написанном на 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

...