Conectar una Base de Datos de MySQL con Laravel y Google Cloud Run

Antes de seguir este tutorial, asegurate de haber creado una instancia de base de datos de MySQL, si no lo has hecho aún, te recomiendo este tutorial sobre ¿Cómo crear una instancia de MySQL en Google Cloud?

Conexión Unix Socket

Debido a que nuestro contenedor de docker en Cloud Run no posee una base de datos a la que nos podamos conectar directamente, deberemos establecer una conexión entre procesos o también llamada Conección Unix Socket.

Por suerte, en laravel este proceso es tan simple como crear una variable de entorno con el path de la conexión he informarle a nuestro servicio de Cloud Run que estamos haciendo uso de la base de datos a través de unix socket.

A continuación te muestro los pasos para establecer este tipo de conexión.

Variable de Ambiente DB_SOCKET

En nuestro servicio de Cloud Run vamos a crear una variable que se llame DB_SOCKET, que contendrá el nombre de nuestra conexión a la base de datos junto con el prefijo /cloudsql/

Enviroment Variable for Cloud SQL
Enviroment Variable for Cloud SQL

Este valor lo puedes encontrar en el menú principal de tu base de datos tal y como se muestra en la siguiente imagen.

Cloud SQL Connection Name
Cloud SQL Connection Name

Una vez agregada la variable, pasaremos a informarle a tu servicio sobre la conexión de Cloud SQL que necesitamos.

Conexión de Cloud SQL

Para establecer esta conexión debemos ir la sección Conexiones del servicio de Cloud Run y en Conexiones de SQL agregar la base de datos de la cual hemos tomado el path.

Conexión de Cloud SQL en Cloud Run
Conexión de Cloud SQL en Cloud Run

Guardar y Reiniciar el Servicio

Una vez has agregado el path y establecido la conexión unix socket, deberás guardar los cambios y esperar a que se genere automáticamente una nueva versión del servicio con los nuevos cambios que harán que tu aplicación de laravel pueda hacer uso de las bases de datos de Cloud SQL.