如何从运行在Cloud Run上的Laravel项目连接到Cloud SQL?

如何从运行在Cloud Run上的Laravel项目连接到Cloud SQL?,laravel,google-cloud-sql,google-cloud-run,Laravel,Google Cloud Sql,Google Cloud Run,对于概念验证项目,我正在尝试将运行在完全管理的云运行上的Laravel项目与作为存储层的云SQL连接起来 我使用gcloud App Engine命令通过谷歌App Engine获得了一个正常运行的服务(该服务可以连接到存储层)。我还通过cloud\u sql\u proxy和我服务的本地docker容器成功地连接了存储层。但我无法通过Cloud Run远程运行设置 我正在部署docker映像,如下所示: gcloud run deploy --image eu.gcr.io/demo/cust

对于概念验证项目,我正在尝试将运行在完全管理的
云运行
上的Laravel项目与作为存储层的
云SQL
连接起来

我使用
gcloud App Engine
命令通过谷歌App Engine获得了一个正常运行的服务(该服务可以连接到存储层)。我还通过
cloud\u sql\u proxy
和我服务的本地docker容器成功地连接了存储层。但我无法通过Cloud Run远程运行设置

我正在部署docker映像,如下所示:

gcloud run deploy --image eu.gcr.io/demo/customerservice --add-cloudsql-instances demo:europe-west1:dps-demo --update-env-vars INSTANCE_CONNECTION_NAME="demo:europe-west1:dps-demo
“我的服务”为请求返回的错误为:

could not find driver (SQL: select * from `cache` where `key` = laravel_cachefa9d927c88ff8ebffd06913d97f9d59e limit 1)
(此错误适用于任何类型的数据库查询,如果使用本地缓存,则类似)

这是我的
.env
文件(我删除了一些与问题无关的杂乱文件):

已解决: 我在Dockerfile的依赖项部分添加了
pdo_mysql

FROM php:7

ENV PORT=8080
ENV HOST=0.0.0.0

RUN apt-get update -y \
  && apt-get install --no-install-recommends -y openssl zip unzip git libonig-dev \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

RUN ["/bin/bash", "-c", "set -o pipefail && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer"]
RUN docker-php-ext-install pdo pdo_mysql mbstring
WORKDIR /app
COPY . /app
RUN composer validate && composer install

EXPOSE 8080
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8080"]

确保容器已启用相关的php/mysql/pdo模块

您的数据库配置应与此类似:

 'mysql' => [
            'driver' => 'mysql',
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],

观察
unix\u套接字
一个条目,即
/cloudsql/instance\u name
,当您通过unix套接字连接时,没有主机,没有端口。

!再次感谢,这解决了问题。我缺少
pdo_mysql
dependency.executor未能运行[/bin/sh-c docker php ext install pdo_mysql mbstring]:退出代码:1
 'mysql' => [
            'driver' => 'mysql',
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],