Deployar una Aplicación de Laravel en Google Cloud Run
A continuación te voy a mostrar como hacer un deploy o subir tu aplicación de laravel 8 (PHP) a Google Cloud Run.
Contenerización Mediante Docker
Google Cloud Run es un hosting de tipo serverless o sin servidor que almacena aplicaciones mediante contenedores de docker, por ello necesitarás crear los archivos de docker necesarios para que tu aplicación de laravel pueda correr sobre Cloud Run.
Dockerfile
Este archivo se va a ejecutar al momento de deployar tu aplicación a Google Cloud Run y va a generar el contenedor en donde va a correr tu aplicación, de manera que debemos escribir los comandos necesarios para crear el servidor de docker en Cloud Run.
En este caso crearemos un servidor de apache con un archivo de configuración ubicado en la carpeta docker/000-default.conf
el cual expondrá el puerto 8080 de nuestro servidor y permitirá a nuestra web correr sobre dicho puerto.
Por un lado, el archivo dockerfile copiará nuestra app en una carpeta temporal llamada /app
e instalará las dependencias necesarias mediante composer para posteriormente crear el servidor de apache con sus respectivas dependencias y copiar nuestra carpeta temporal a la carpeta principal del servidor /var/www, así como nuestro archivo de configuración de nuestro sitio web.
Por último, se expondrá el puerto 8080 y se habilitarán los permisos necesarios como el de escritura de la carpeta /var/www/storage
que corresponde al storage de nuestra aplicación.
Seguidamente te muestro el dockerfile que debes agregar al root de tu aplicación.
Adicionalmente, el archivo de configuración para el servidor de apache que debes colocar en la carpeta /docker/000-default.conf
Deploy
Para hacer el deploy o subir nuestro contenedor a google cloud, únicamente deberás instalar la suite de google gsutil en tu computador y ejecutar el siguiente comando en el root de tu proyecto una vez te has logueado.
Si no sabes cómo loguearse desde la consola, puedes ejecutar el siguiente comando e ingresar la información de tu cuenta de google cloud.
Si deseas que tu aplicación se deploye usando integración y deploy continuo CI/CD, puedes seguir el tutorial sobre ¿Cómo Configurar un Servicio de Cloud Run con Cloud Build para Integración y Deploy Continuo en Github?
Base de Datos MySQL
Una vez has deployado tu aplicación de Laravel, vamos a pasar a crear y conectar la base de datos de MySQL.
Si aún no has creado tu base de datos, te recomiendo seguir este tutorial sobre ¿Cómo Crear una Base de Datos de MySQL en Google Cloud? y además, este otro para ¿Conectar una Base de Datos a una Aplicación de Laravel dentro de un Servicio de Cloud Run?
Importante
Cada versión de contenedor es independiente de las demás por lo que los cambios que generes en archivos dentro del contenedor solo serán visibles en dicho contenedor, por lo que si tu aplicación permite la subida de archivos a tu servidor, todos estos deberán ser mediados a través de Google Cloud Storage.