使用TCP

时间:2019-03-11 14:04:09

标签: google-app-engine google-cloud-platform google-cloud-sql

我正在尝试从App Engine中的自定义运行时环境连接到Google sql云实例。

当我按照doc使用Unix域套接字进行连接时,它可以工作。问题是当我尝试使用TCP连接进行连接时。它显示:

Warning: mysqli_connect(): (HY000/2002): Connection refused in 
/var/www/html/index.php on line 3
Connect error: Connection refused

这是我的app.yaml文件:

runtime: custom
env: flex

beta_settings:
  cloud_sql_instances: testing-mvalcam:europe-west1:testdb=tcp:3306

resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

Dockerfile:

FROM php:7.0-apache

ENV PORT 8080
CMD sed -i "s/80/$PORT/g" /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf && docker-php-entrypoint apache2-foreground

RUN docker-php-ext-install mysqli
RUN a2enmod rewrite

COPY ./src /var/www/html

EXPOSE $PORT

还有index.php:

<?php

$link = mysqli_connect('127.0.0.1', 'root', 'root', 'test');

if (!$link){
    die('Connect error: '. mysqli_connect_error());
}

echo 'successfully connected';
mysqli_close($link);

?>

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

如您正在使用的documentation所示(请记住单击此页面上的TCP CONNECTION选项卡),位于app.yaml的与Cloud SQL实例有关的部分中,有关正在使用的TCP端口的信息需要数据库服务器。

答案 1 :(得分:1)

IP地址“ 172.17.0.1”与Web服务器运行所在的Docker容器相关,您可以在该in this documentation上获取更多上下文。

如果您使用Dockerfile进行部署,则可能无法使用您正在使用的文档页面来调整用例。在以下documentation中,您可以阅读有关App Engine灵活运行时的更多信息。