#java #docker #selenium #proxy #devops
#java #docker #селен #прокси #devops
Вопрос:
У меня есть BrowserMobProxy
реализация в проекте. Эта логика использует IP-адрес для подключения к прокси и тестового веб-сервиса пользовательского интерфейса (прокси используется для сохранения статистики запросов / ответов). Раньше все работало нормально, но мы перезапускаем docker, и IP-адрес прокси-сервера был изменен. Теперь мне нужно найти новый IP-адрес для прокси.
Код, в котором используется IP-адрес
public static void startProxyServer(String address) {//address = "172.17.0.2"
if (browserMobProxy.isStarted()) {
browserMobProxy.stop();
}
try {
browserMobProxy.start(9090, Inet4Address.getByName(address)); // {1}
useExclusivePort = browserMobProxy.getPort();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
После перезапуска docker проект начал сбой в строке {1}
.
Я начал поиск нового IP на сервере. К сожалению, я не могу использовать ifconfig
команду из образа docker, поскольку эта команда там не устанавливается. Итак, я определил адрес с сервера следующим образом:
После того, как я использую IP 172.17.0.2, код работает хорошо, и я надеялся, что решил эту проблему, но, как оказалось, я потерял соединение с этим прокси-сервером — в пользовательском интерфейсе я получил следующий результат:
Так что я совершенно запутался:
- Все работает хорошо до перезапуска образа docker
- Старый IP выглядит как 172.19.0.5, но теперь с ним происходит сбой кода.
- Я «нашел» новый IP 172.17.0.2 и код, работающий с ним.
- Я не уверен, что определил правильный IP, поскольку все старые IP были запущены с 172.19.0.{4,5,8}
- У меня нет связи с новым IP
- Я не знаю или я нашел правильный IP и почему он подходит для кода, но не подходит для подключения
- Проект развертывается с помощью образа Jenkins docker. Браузеры запускаются в сетке selenium
#Вопрос:
Как мне нужно найти правильный IP, который я могу использовать для прокси-соединения?
Комментарии:
1. вам нужен способ программной передачи IP-адреса, например, с помощью аргумента env vairable или командной строки.
2. @DMart Ок. Как узнать, какой IP мне нужно передать?
3. Похоже, вы настроили внешний прокси, да? Нам понадобится более подробная информация об этом. Это не похоже на обычный прокси-сервер browsermob, который просто используется для управления запросами / ответами.
4. @DMart Я сам не настраиваю прокси. Может быть, изображение docker делает это
5. Какой браузер вы используете?
Ответ №1:
существуют и другие команды, с помощью которых вы можете узнать, на каком IP-адресе работает ваш сервер. проверьте, есть ли у вас доступ к любому из следующих
сначала вы можете попробовать
netstat -an
который даст вам все IP-адреса, которые прослушивает ваш сервер, вместе с какими портами и какие IP-адреса подключены к нему вместе с портами
если это не сработает, попробуйте следующее https://dev.to/trexinc/netstat-without-netstat-inside-containers-9ak
затем попробуйте
ip addr
что даст вам результат, аналогичный ifconfig
и последнее, что вы можете попробовать с
docker inspect -f '{{ .NetworkSettings.IPAddress }}' containerID
который предоставит вам сетевые интерфейсы вашего docker
Комментарии:
1. Я получаю ошибку: ошибка синтаксического анализа шаблона: template: :1:18: выполнение «» в <.NetworkSettings . IPAddress>: на карте нет записи для ключа «NetworkSettings» с последней командой. Можете ли вы мне разъяснить?