Подключение к websocket на Google Cloud Run docker container

Я довольно новичок в GCP, поэтому прошу простить мое невежество. Я пытаюсь соединить несколько битов вместе, а именно:

  • Экземпляр Node, работающий на App Engine
  • Экземпляр ChatScript, работающий на Cloud Run с Dockerfile
  • Экземпляр SQL, работающий на Cloud SQL
  • Некоторые задачи планировщика через Cloud Functions
  • и база данных Firestore для хорошей меры

Я пытаюсь заставить экземпляр Node общаться с экземпляром ChatScript через websocket. Однако при этом я получаю странный ответ, но я не знаю, исходит ли он от GCP или ChatScript:

\u0015\u0003\u0001\u0000\u0002\u0002F

Это происходит при подключении через порт 443, используя либо канонический URL, либо IP экземпляра CR. Я также уверен, что это никак не связано с Node.

В статье на Medium были некоторые команды, которые я пытался выполнить, чтобы разрешить вебсокеты и проброс портов, но у меня такое чувство, что это красная селедка. Сервер ChatScript получает команду запускаться на $PORT из Dockerfile, так что это, несомненно, должно сделать проброс портов автоматически?

Я также обновил правила брандмауэра, чтобы разрешить 443 и 8080, но я не думаю, что это тоже правильно.

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

Мне также интересно, не перепутал ли я некоторые конфигурации различных служб GCP и не смешал ли их вместе...?

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

Dockerfile

FROM ubuntu:trusty

RUN echo 'deb http://archive.ubuntu.com/ubuntu trusty main' >/etc/apt/sources.list
RUN echo 'deb http://archive.ubuntu.com/ubuntu trusty-security main' >>/etc/apt/sources.list
RUN echo 'deb http://archive.ubuntu.com/ubuntu trusty-updates main' >>/etc/apt/sources.list
RUN echo 'deb http://archive.ubuntu.com/ubuntu trusty universe' >>/etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y --force-yes autoconf \
curl \
git \
wget \
unzip

COPY chatscript-client /bin/
RUN chmod +x /bin/chatscript-client

ENV DEBIAN_FRONTEND noninteractive

COPY build/Botname /bin/Botname

RUN ls -lah /bin/
RUN ls -lah /bin/Botname

RUN chmod +x /bin/Botname/BINARIES/LinuxChatScript64

USER root

CMD ["/bin/chatscript-client"]

chatscript-client

#!/bin/bash

echo "Listening on port $PORT"

cd /bin/Botname/
./BINARIES/LinuxChatScript64 PORT=$PORT

app.flexible.yaml

env: flex

env_variables:
  DB_USER: foo
  DB_PASS: foo
  DB_NAME: foo
  CLOUD_SQL_CONNECTION_NAME: foo:europe-west1:foo

beta_settings:
  cloud_sql_instances:foo:europe-west1:foo

network:
  forwarded_ports:
    - 65080
    instance_tag: websocket
0
задан 30 October 2019 в 11:54
1 ответ

Да, вы правы (согласно вашим комментариям), для манипулирования портами я бы предложил раскрутить сервер GCE VM Ubuntu, а затем смонтировать туда свой сервер (правила брандмауэра GCP также необходимы, но кажется, вы уже это рассмотрели).

1
ответ дан 2 November 2020 в 18:42

Теги

Похожие вопросы