Предоставление нескольких портов из ManagedVM

Я использую функцию управляемой виртуальной машины для запуска сервера WebSocket, который я хотел бы открыть в Интернете на любом порту (предпочтительно на порту 80) через URL-адрес, например: mvm.mydomain.com

У меня пока нет особого успеха. Вот соответствующие части различных файлов, которые я использую для достижения этой цели:

Dockerfile:

EXPOSE 8080 8081

В конце Dockerfile запускается приложение Python: оно отвечает на проверки работоспособности на порте 8080 (я могу убедиться, что это работает) и отвечает на запросы WebSocket на порте 8081.

app.yaml:

module: mvm
version: 1
runtime: custom
vm: true
api_version: 1

network:
  forwarded_ports: ["8081"]

Я развернул это приложение в облаке, используя:

$ gcloud preview app deploy .

В облачной консоли я проверяю, что TCP-порты 8080 и 8081 принимаются для входящего трафика. Я также наблюдаю IP-адрес, назначенный экземпляру GCE (mvm: 1): x.y.z.z.

$ curl http://x.y.z.z:8080/_ah/health
$ curl http://mvm.my-app-id.appspot.com/_ah/health

Отвечать как с200 OK.

Подключение сервера WebSocket с использованием некоторого JavaScript также работает:

new WebSocket('ws://x.y.z.z:8081');

Все идет нормально. За исключением того, что это не сработало (тайм-аут):

new WebSocket('ws://mvm.my-app-id.appspot.com:8081');

Я хотел бы знать, почему вышеупомянутая команда WebSocket не работает. Может быть, что-то я не понимаю во взаимодействии перенаправления портов GAE / GCE?

Если бы это можно было как-то сработать, я предполагаю, что последними шагами по его завершении будут следующие.

dispatch.yaml:

dispatch:
  # Send all websocket traffic to the ManagedVM module.
  - url: "mvm.mydomain.com/*"
    module: mvm

Я также настроил пользовательский домен GAAME CNAME на mvm.mydomain.com.

Подключение сервера WebSocket с использованием JavaScript должно работать следующим образом:

new WebSocket('ws://mvm.mydomain.com:8081');

Ответы на вопрос(1)

Ваш ответ на вопрос