我对 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 防火墙规则,但您似乎已经涵盖了这一点)。