У меня есть приложение колбы, использующее bokeh , которое работает в контейнере Docker, и оно работает, когда я использую его на локальных машинах.
Однако при развертывании его на экземпляре GCP, даже если я могу связаться с сервером, у меня появляются некоторые объекты AjaxDataSource (), которые не могут подключиться.
Некоторые детали,
- Все машины, локальные и gcp vm работают под управлением Ubuntu 18.04
Приложение для колб запускается так:
app.run(host="0.0.0.0", port=6600, debug=False)
Маршрут Ajax выглядит следующим образом,
http://127.0.0.1:6600/land/tmidemo/data_rate?name=ResultBaseKeysV1
Правила брандмауэра GCP выглядят так:
Name Type Targets Filters Protocols / ports Action Priority Network
tmiserver-egress Egress Apply to all IP ranges: 0.0.0.0/0 tcp:6600 udp:6600 Allow 1000 default
tmiserver-ingress Ingress Apply to all IP ranges: 0.0.0.0/0 tcp:6600 udp:6600 Allow 1000 default
Docker-контейнер работает так,
docker run --net tminet --hostname=TEST -p 6600:6600 -v $(pwd):/app/public --name myserver --rm myserver
Я не использую сервер Bokeh. Вызовы AjaxDataSource () указывают на приложение-колбу, а не на другой (боке) сервер
Много чего работает,
- может использовать внешний IP-адрес GCP и обращаться к серверу
- переход с веб-страницы на веб-страницу работает, поэтому работает флеш-маршрутизация
То, что НЕ работает, это вызов Ajax (), который использует 127.0.0.1
, хотя это работает, когда я запускаю контейнер на локальной машине.
Ошибка, которую я вижу в окне проверки: ERR_CONNECTION_REFUSED
Экземпляр GCP hosts.conf
DOES включает строку для 127.0.0.1 localhost
Я пытался (с здесь ) на экземпляре виртуальной машины GCP, тот же результат,
iptables -A INPUT -i docker0 -j ACCEPT
Я также пытался (с здесь ) изменить сеть запуска Docker на --net="host"
, и результат идентичен.
Я также пытался добавить --add-host localhost:127.0.0.1
в команду запуска Docker, тот же результат.
Я думаю, что проблема в настройке GCP, чтобы знать, как направить запрос на 127.0.0.1
, но я не знаю, где проверить, настроить это, помимо того, что я уже сделал.