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

标签 laravel google-cloud-sql google-cloud-run

对于概念验证项目,我正在尝试连接在完全托管的 Cloud Run 上运行的 Laravel 项目与 Cloud SQL作为存储层。
我已经设法通过 Google App Engine 使用 gcloud app engine 获得正常运行的服务。命令(此服务可以连接到存储层)。我还通过 cloud_sql_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文件(我删除了一些与问题无关的杂物):
APP_NAME=Laravel
APP_ENV=local
APP_KEY=***
APP_DEBUG=true
APP_URL=http://CustomerService.test
APP_STORAGE=/tmp


LOG_CHANNEL=stack
LOG_LEVEL=debug

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=***
DB_SOCKET=/cloudsql/demo:europe-west1:dps-demo

BROADCAST_DRIVER=log
CACHE_DRIVER=database
QUEUE_CONNECTION=sync
SESSION_DRIVER=database
SESSION_LIFETIME=120

VIEW_COMPILED_PATH=/tmp

最佳答案

确保容器启用了相关的 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_socket一项,即/cloudsql/instance_name当您通过 unix 套接字连接时,没有主机,没有端口。

关于laravel - 如何从在 Cloud Run 上运行的 Laravel 项目连接到 Cloud SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65253179/

相关文章:

mysql - 如何在急切加载关系中进行急切加载计数

php - 自动为 laravel 模型中的字段赋值

excel - 使用 laravel excel 和 laravel 队列导入大型 excel 文件

laravel - Yajra 数据表按列排序

mysql - 谷歌云 sql 实例在重启时无限加载

google-cloud-platform - Google Cloud Run 如何立即启动

Google Apps 脚本的 Jdbc 连接错误

php - Google 计算引擎 + Cloud SQL + Cloud DNS + Google Domains - IP 已更改

python - 哪个生产服务器用于 Cloud Run 中的 Python 应用程序?

google-cloud-platform - Stackdriver Trace 与 Google Cloud Run