如何从运行在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'),
]) : [],