连接到 Google Cloud Run Docker 容器上的 websocket

连接到 Google Cloud Run Docker 容器上的 websocket

我对 GCP 还只是个新手,所以请原谅我的无知。我试图将以下几点联系起来:

  • 在 App Engine 上运行的 Node 实例
  • A聊天脚本使用 Dockerfile 在 Cloud Run 上运行的实例
  • 在 Cloud SQL 上运行的 SQL 实例
  • 通过 Cloud Functions 执行一些调度任务
  • 以及一个 Firestore 数据库

我正在尝试让 Node 实例通过 websocket 与 ChatScript 实例通信。但是,这样做时我得到了最奇怪的响应,但我不知道它是来自 GCP 还是 ChatScript:

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

这是使用 CR 实例的规范 URL 或 IP 通过端口 443 进行连接时的情况。我还确信这与 Node 无关。

有一些命令一篇 Medium 文章我尝试运行它以允许 websockets 和端口转发,但我感觉这只是一个幌子。ChatScript 服务器被告知从 Dockerfile 运行,$PORT所以它肯定应该自动进行端口转发?

我还更新了防火墙规则以允许 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"]

聊天脚本客户端

#!/bin/bash

echo "Listening on port $PORT"

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

应用程序.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

答案1

是的,你是正确的(根据您的评论),对于端口操作,我建议启动 GCE VM Ubuntu 服务器,然后在那里安装您的服务器(还需要 GCP 防火墙规则,但您似乎已经涵盖了这一点)。

相关内容