Expondo várias portas de dentro de um ManagedVM

Estou usando a funcionalidade de VM gerenciada para executar um servidor WebSocket que gostaria de expor à Internet em qualquer porta (de preferência a porta 80) por meio de uma URL como: mvm.mydomain.com

Ainda não estou tendo muito sucesso. Aqui estão as partes relevantes dos vários arquivos que estou usando para fazer isso:

Dockerfile:

EXPOSE 8080 8081

No final do Dockerfile, um aplicativo Python é iniciado: responde às verificações de integridade na porta 8080 (posso verificar se isso funciona) e responde às solicitações do WebSocket na porta 8081.

app.yaml:

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

network:
  forwarded_ports: ["8081"]

Implantei este aplicativo na nuvem usando:

$ gcloud preview app deploy .

No console da nuvem, asseguro-me de que as portas TCP 8080 e 8081 sejam aceitas para o tráfego recebido. Também observo que o endereço IP atribuído à instância do 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

Reponha ambos com200 OK.

A conexão do servidor WebSocket usando JavaScript também funciona:

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

Por enquanto, tudo bem. Exceto que isso não funcionou (tempo limite):

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

Gostaria de saber por que o comando WebSocket acima não funciona. Talvez algo que eu não entenda na interação de encaminhamento de porta do GAE / GCE?

Se isso pudesse funcionar de alguma forma, imagino que os seguintes passos seriam os últimos a concluir.

dispatch.yaml:

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

Também configurei o domínio personalizado do GAE CNAME em mvm.mydomain.com.

A conexão do servidor WebSocket usando JavaScript deve funcionar como:

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

questionAnswers(1)

yourAnswerToTheQuestion