Google app engine GAE云SQL代理使用TCP套接字(而不是UNIX)

Google app engine GAE云SQL代理使用TCP套接字(而不是UNIX),google-app-engine,google-cloud-sql,cloud-sql-proxy,Google App Engine,Google Cloud Sql,Cloud Sql Proxy,我们正在GAE上设置一个节点应用程序,我们正在使用的一个库不能很好地使用unix套接字 GAE内部的云代理设置使用unix套接字,我已经在google文档中搜索过了,但找不到有关配置GAE内创建的云代理(即在生产中)以使用TCP套接字的信息 (在测试时,我在本地完成了这项工作,但无法确定需要在app.yaml中设置什么才能在生产中实现)要在应用程序中使用TCP套接字,您必须迁移到 您可以使用命令生成Dockerfile $gcloud beta应用程序gen config--自定义 生成此运行时

我们正在GAE上设置一个节点应用程序,我们正在使用的一个库不能很好地使用unix套接字

GAE内部的云代理设置使用unix套接字,我已经在google文档中搜索过了,但找不到有关配置GAE内创建的云代理(即在生产中)以使用TCP套接字的信息


(在测试时,我在本地完成了这项工作,但无法确定需要在app.yaml中设置什么才能在生产中实现)

要在应用程序中使用TCP套接字,您必须迁移到

您可以使用命令生成Dockerfile

$gcloud beta应用程序gen config--自定义

生成此运行时的Dockerfile后,按如下方式修改它:

FROM gcr.io/google_appengine/nodejs
RUN /usr/local/bin/install_node '>=4.3.2'
RUN apt-get update
RUN apt-get install mysql-client -yy
RUN apt-get install wget -yy
COPY . /app/
RUN npm install --unsafe-perm || \
  ((if [ -f npm-debug.log ]; then \
      cat npm-debug.log; \
    fi) && false)
RUN wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
RUN chmod +x cloud_sql_proxy
RUN echo -e “#!/bin/bash\n./cloud_sql_proxy -instances=YOUR-INSTANCE-DB=tcp:3306 &\nnode server.js” > script.sh
RUN chmod +x script.sh
CMD bash script.sh
在部署时,这将生成容器,该容器将使代理通过TCP进行通信

在部署之前,您必须在
app.yaml
文件中从
env_variables
实例连接_NAME
中删除,因为您已经在Dockerfile中指出了这一点

别忘了运行这个

我已经使用了这个示例,您可以看到
server.js
中的函数
connect
具有如下if条件:

if (process.env.INSTANCE_CONNECTION_NAME && process.env.NODE_ENV === 'production') {
    config.socketPath =/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}
}
如果您有类似的内容,请删除它,因为您现在没有在环境变量中提供实例\连接\名称


这是一个解决问题的办法,但如果不是这样的话,我认为这是不可能的

谢谢,这正是我所担心的,希望尽可能避免定制构建以保持简单。我们已经找到了如何让我们的库与unix套接字一起使用的方法,所以我不会对此进行测试,但我会将其标记为已接受。