Я пытаюсь сделать запрос от экземпляра контейнера python к конечной точке на сервере NodeJS, но мои запросы не разрешаются на localhost и перенаправляются на мой корпоративный прокси. (Docker обход прокси-сервера уже настроен на localhost и 127.0.0.0/8).
Docker настройка:
IMAGE COMMAND PORTS NAMES
redis:alpine "docker-entrypoint.s…" 0.0.0.0:6379->6379/tcp redis
pyserver "flask run" 0.0.0.0:5000->5000/tcp pyserver
nodeserver "npm start" 0.0.0.0:80->80/tcp, 0.0.0.0:8443->8443/tcp nodejs_server
postgres:10 "docker-entrypoint.s…" 0.0.0.0:5432->5432/tcp database
Мой python сервер настроен с использованием Flask, и я установил маршрут (скажем, «/ views») с функцией, которая будет делать запрос к указанной конечной точке c на nodejs_server.
Например:
r.get("http://nodejs_server:80/endpoint")
, но при посещении этой конечной точки в браузере или также через CURL из контейнера pyserver (curl -X GET http://pyserver/views), контейнер отправляет исходящий запрос, а не разрешается на localhost: 80.
Все контейнеры находятся в одной сети, а обход прокси-сервера docker уже настроен. Pyserver не имеет проблем с подключением к контейнеру redis по имени хоста (redis.Redis (host = "redis", port = 6379)).
Я пробовал использовать библиотеки aiohttp и запросов, но оба не смогли разрешить nodejs_server на localhost. Я что-то делаю не так, или библиотеки python всегда будут делать запросы к внешним?
Сеть docker, в которой они находятся, является мостовой.