Tutorial de integraci贸n continua para Laravel 6 en Google Cloud Run

Hola a todos! En previsi贸n del inicio de los cursos "Framework Laravel" y "Backend-developer in PHP" , continuamos compartiendo material interesante sobre el tema. Vamos




En los 煤ltimos a帽os, la popularidad de Laravel ha aumentado dram谩ticamente . La comunidad de Laravel es incluso de la opini贸n de que Laravel hizo que el proceso de trabajar en PHP sea m谩s agradable en comparaci贸n con el dolor que era antes. Laravel 6 tiene algunas caracter铆sticas nuevas y geniales . Obtener una URL de trabajo s煤per escalable para su aplicaci贸n lleva horas, si no d铆as. Y crear algo como Kubernetes es una tarea desalentadora. Es en tales casos que Google Cloud Run est谩 en la mejor luz, porque con 茅l puede obtener una URL HTTP de trabajo para cualquiera de sus aplicaciones de contenedor en minutos.

Google Cloud Run no tiene servidor y est谩 completamente administrado por Google. Obtiene s煤per escala, pago por segundo, URL de HTTP y su propia asignaci贸n de dominio.

Si desea ejecutar contenedores sin estado, Cloud Run es la forma m谩s sencilla de hacerlo. En este art铆culo, explicar茅 en detalle c贸mo hacer que su aplicaci贸n Laravel 6 se ejecute en la nube de Google con Integraci贸n Continua (CI).

Requerimientos Requeridos


  • Est谩 familiarizado con PHP / Composer y sabe acerca de Laravel (creo que de lo contrario no estar铆a aqu铆);
  • Sabes c贸mo usar Git desde la consola;
  • Su c贸digo CI / CD est谩 alojado en GitHub y usted sabe c贸mo usarlo;
  • Est谩 familiarizado con Docker, tal vez incluso con el ensamblaje de etapas m煤ltiples;
  • Tiene una cuenta de Google Cloud en funcionamiento (le otorgan un pr茅stamo sin intereses de $ 300 por 1 a帽o, no hay raz贸n para no iniciarlo).

Por qu茅 Cloud Run es ideal para principiantes


Por dos razones, que describir茅 a continuaci贸n:

  • Aprender谩 sobre las mejores pr谩cticas y el software, como Docker y CI / CD.
  • El marco principal funcionar谩 despu茅s de hacer clic en un bot贸n, elegir dos cosas y cinco minutos de espera, y puede obtener una URL HTTP que funcione. Cuanto mas facil

Pasos de implementaci贸n


La siguiente es una gu铆a para configurar e implementar Laravel 6 en Cloud Run:

1. Clone Laravel o un nuevo proyecto de Laravel

Comience clonando Laravel o use el compositor o Laravel CLI, como se indica en la gu铆a de instalaci贸n oficial.

Utilizo el compositor para obtener la 煤ltima versi贸n de Laravel, como se muestra a continuaci贸n:

composer global require laravel/installer 

Ejecut茅 el siguiente comando para obtener la 煤ltima versi贸n de Laravel:

 composer create-project --prefer-dist laravel/laravel laravel6-on-google-cloud-run 



2. Primera prueba local

Luego ejecute cd laravel6-on-google-cloud-run y luego php artisan serve . Para ver que todo funciona, fui a la direcci贸n http: // localhost: 8000 en el navegador y funcion贸 para m铆. Ten铆a PHP 7.2 instalado localmente.



3. Crear un nuevo repositorio en GitHub

Cree un nuevo repositorio en GitHub como se muestra a continuaci贸n:



4. Agregar repositorio y README

Ahora, despu茅s de haber creado el repositorio, agr茅guelo a la copia local de Laravel y agregue el archivo README.
Para hacer esto, ejecute los siguientes comandos en la consola:

 git init code . # I used VS code to change the readme git add readme.md git commit -m "Initial commit -- App Readme" git remote add origin git@github.com:geshan/laravel6-on-google-cloud-run.git git push -u origin master 

Despu茅s de ejecutar el comando en mi repositorio en GitHub, apareci贸 lo siguiente:



5. Agregue Laravel completo, abra la solicitud de extracci贸n

Ahora enviemos toda la aplicaci贸n como una solicitud de extracci贸n al repositorio de GitHub ejecutando los siguientes comandos:

Despu茅s de eso, abra la solicitud de extracci贸n en el repositorio, de esta manera . 驴Quiz谩s piense por qu茅 necesito una solicitud de extracci贸n si estoy trabajando solo en un proyecto?

Bueno, bueno, creo que siempre debes seguir un enfoque sistem谩tico, incluso si trabajas solo.
Despu茅s de eso, ralentice su solicitud de extracci贸n.

6. Configuraci贸n de prueba con acciones de GitHub

No es la parte divertida. Despu茅s de agotar su solicitud de extracci贸n, GitHub sabr谩 que este es un proyecto de Laravel. Haga clic en la pesta帽a Acciones en su p谩gina de repositorio y ver谩 algo como lo que se muestra a continuaci贸n:



Haga clic en Configurar este flujo de trabajo en Laravel , y en la p谩gina siguiente, haga clic en el bot贸n Iniciar confirmaci贸n en la esquina superior derecha. Despu茅s de eso, agregue el mensaje de confirmaci贸n como se muestra a continuaci贸n y haga clic en Confirmar nuevo archivo .



As铆 es como consigui贸 su instalaci贸n de CI. Las pruebas de Laravel por defecto ahora se ejecutar谩n en cada empuje de git. 驴Es dificil?
Gracias a Great Mind GitHub!
隆No m谩s crear archivos .myCIname.yml !

7. Agregue docker y ejecute docker-compose para ejecutar la aplicaci贸n localmente

Ahora agreguemos Docker y hagamos Docker-compose para ejecutar la aplicaci贸n localmente sin PHP o servicio artesanal .

Esta parte del tutorial est谩 inspirada en el art铆culo de Nicolas Laravel en Google Cloud Run .

Si quieres saber m谩s sobre Docker y Laravel, mira este art铆culo .

Para comenzar, ejecute los siguientes comandos para actualizar la rama maestra, ya que agregamos un nuevo archivo de flujo de trabajo utilizando la interfaz GitHub:

 git checkout master git fetch git pull --rebase origin master # as we added the workflow file from github interface git checkout -b docker 

Agregue la clave al archivo .env.example , .env archivo .env , como se muestra a continuaci贸n:

 APP_NAME=Laravel APP_ENV=local APP_KEY=base64:DJkdj8L5Di3rUkUOwmBFCrr5dsIYU/s7s+W52ClI4AA= APP_DEBUG=true APP_URL=http://localhost 

Dado que esto es solo una demostraci贸n, puede hacerlo, pero en aplicaciones reales, tenga cuidado con los secretos. Para aplicaciones listas para producci贸n, deshabilite la depuraci贸n y otras cosas relacionadas con el desarrollo.

Agregue dicho Dockerfile a la ra铆z del proyecto:

 FROM composer:1.9.0 as build WORKDIR /app COPY . /app RUN composer global require hirak/prestissimo && composer install FROM php:7.3-apache-stretch RUN docker-php-ext-install pdo pdo_mysql EXPOSE 8080 COPY --from=build /app /var/www/ COPY docker/000-default.conf /etc/apache2/sites-available/000-default.conf COPY .env.example /var/www/.env RUN chmod 777 -R /var/www/storage/ && \ echo "Listen 8080" >> /etc/apache2/ports.conf && \ chown -R www-data:www-data /var/www/ && \ a2enmod rewrite 

Agregue el siguiente archivo a docker/000-default.conf :

 <VirtualHost *:8080> ServerAdmin webmaster@localhost DocumentRoot /var/www/public/ <Directory /var/www/> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> 

Despu茅s de eso agrega docker-compose.yml :

 version: '3' services: app: build: context: ./ volumes: - .:/var/www ports: - "8080:8080" environment: - APP_ENV=local 

Reduzcamos todo a lo principal.

Si est谩 tratando de entender todo lo escrito aqu铆, puede ser exhaustivo, as铆 que perm铆tame contarle sobre las partes principales:

  • Utilizamos la imagen oficial de Docker Apache de PHP para ejecutar Laravel, tiene PHP versi贸n 7.3.
  • Usamos una compilaci贸n de varias etapas para obtener dependencias con Composer, y luego las copiamos a la imagen principal del acoplador, que tiene PHP 7.3 y Apache.
  • Dado que Google Cloud Run requiere que el servidor web escuche en el puerto 8080, usamos 000-default.conf para configurar esto.
  • Para hacer que Docker-compose sea m谩s f谩cil de ejecutar, ingrese solo un comando docker-compose up.
  • Ahora que ha le铆do hasta este punto, ejecute docker-compose desde la ra铆z y todo deber铆a funcionar en http://localhost:8080 , en este caso comprender谩 que Laravel 6 se ejecuta localmente en Docker.

A continuaci贸n, ver谩 el resultado despu茅s de ejecutar docker-compose up el final:



Si tiene Laravel trabajando con Docker, abra una nueva solicitud de extracci贸n (por ejemplo, una ) y agregue Docker a su proyecto.

Ejecut茅 los siguientes comandos en la ra铆z del proyecto antes de abrir la solicitud de extracci贸n:

 git status 

Obtendr谩s algo como esto:

 On branch docker Untracked files: (use "git add <file>..." to include in what will be committed) Dockerfile docker-compose.yml docker/ nothing added to commit but untracked files present (use "git add" to track) 

Y ejecuta los siguientes comandos:

 git add . git commit -m "Add docker and docker compose" git push origin docker 

Como beneficio adicional, ejecutar谩n la prueba predeterminada de Laravel despu茅s de la inserci贸n, como se ve a continuaci贸n:



Solo el propietario del repositorio tiene acceso a la pesta帽a Acciones, por lo que otras personas no necesitan conocer los resultados de sus compilaciones de prueba

8. Agregue una implementaci贸n al bot贸n Google Cloud .

Ahora implementemos esta instalaci贸n de Laravel en Google Cloud Run de una manera simple. En esta etapa, se cree que organiz贸 su solicitud de extracci贸n desde la rama acoplable.

Ejecutemos los siguientes comandos:

 git checkout master git fetch git pull --rebase origin master git checkout -b cloud-run-button 

Agregue lo siguiente a su archivo readme.md :

### Run on Google cloud run

[![Run on Google Cloud](https://storage.googleapis.com/cloudrun/button.svg)](https://console.cloud.google.com/cloudshell/editor?shellonly=true&cloudshell;_image=gcr.io/cloudrun/button&cloudshell;_git_repo=https://github.com/geshan/laravel6-on-google-cloud-run.git)


Reemplace cuidadosamente la 煤ltima parte de la URL HTTP de su repositorio, por ejemplo, si su repositorio est谩 ubicado en la direcci贸n a la que cambiar谩, luego confirme y presione .

Su solicitud de extracci贸n deber铆a verse as铆.

9. Implementar en Google Cloud Run

Despu茅s de combinar su solicitud de extracci贸n, vaya a la p谩gina del repositorio y haga clic en el bot贸n Ejecutar en Google Cloud .



Despu茅s de eso, si ha iniciado sesi贸n en su cuenta de Google y tiene la configuraci贸n de la nube de Google con un proyecto, haga clic en el bot贸n "Continuar". Puede que tenga que esperar un poco, despu茅s de esto:

  1. Elija un proyecto: elija un proyecto para implementar esta aplicaci贸n
    Elija una regi贸n: elija una regi贸n para implementar esta aplicaci贸n, generalmente elijo us-central-1
    Luego espere a que el contenedor se recopile y expanda, el proceso en mi caso se ve as铆:

Si todo va bien, en Google Cloud Shell ver谩 las URL de HTTP en las que puede hacer clic para ver que su aplicaci贸n Laravel se est谩 ejecutando, como se muestra a continuaci贸n:



Lo que sucedi贸 arriba es esto:

  1. Despu茅s de elegir una regi贸n, el script cre贸 una imagen del contenedor de Docker desde el Dockerfile en el repositorio;
  2. Luego introdujo la imagen ensamblada en el Registro de contenedores de Google;
  3. Despu茅s de eso, utilizando la CLI de gcloud, implementa la imagen ensamblada en Cloud Run, que devuelve la URL.

10. 隆Hurra! 隆Tu aplicaci贸n est谩 funcionando!

Despu茅s de obtener la URL, ver谩 que su aplicaci贸n se ejecuta en Google Cloud Run, como se muestra a continuaci贸n:



Si desea implementar una versi贸n diferente, puede cambiar su solicitud de extracci贸n a maestra y hacer clic nuevamente en el bot贸n para la implementaci贸n.

M谩s informaci贸n sobre Google Cloud Run


Los precios de Google Cloud Run son muy generosos. Puede ejecutar cualquier aplicaci贸n en un contenedor o aplicaci贸n web en Google Cloud Run.

Ejecut茅 un proyecto de casa que recibi贸 1 solicitud por minuto, y no tuve que pagar nada.

Debajo del cap贸, usa Knative y Kubernetes. Tambi茅n se puede ejecutar en su cl煤ster de Kubernetes, pero qui茅n quiere administrar el cl煤ster de K8 si solo puede presionar y aprender una aplicaci贸n escalable sin servidor totalmente administrada

TLDR


Para iniciar Laravel 6 en Google Cloud Run r谩pidamente, siga estos pasos:

  • Aseg煤rese de haber iniciado sesi贸n en su cuenta de Google Cloud ;
  • Siga el enlace: https://github.com/geshan/laravel6-on-google-cloud-run ;
  • Haga clic en el bot贸n azul "Ejecutar en Google Cloud" ;
  • Elige tu proyecto;
  • Elige tu regi贸n;
  • Espere un momento y obtenga la URL de su aplicaci贸n Laravel como se muestra a continuaci贸n. Al茅grate!





Conclusi贸n


Con suerte, ejecutar la aplicaci贸n Laravel en Google Cloud Run result贸 ser una tarea sencilla para usted. Incluso pudo ejecutar pruebas con acciones de Github. Espero que este art铆culo te haya sido 煤til.

Para adoptar el enfoque de CI / CD, puede leer este art铆culo , que habla sobre el uso de compilaciones en la nube. Dado que el mismo contenedor funciona localmente y en producci贸n (Google Cloud Run), no necesita aprender un nuevo marco para cambiar a una arquitectura sin servidor.

Cualquier aplicaci贸n web en el contenedor puede ejecutarse en Google Cloud Run, 隆as铆 que lo considero un gran servicio!


Eso es todo, y le recordamos que el 21 y 22 de enero todos pueden visitar el intensivo en l铆nea gratuito , en el marco del cual crearemos un bot de Telegram para pedir caf茅 en el establecimiento y pagar en l铆nea. Puedes registrarte para el segundo d铆a de intensivo aqu铆 .

Source: https://habr.com/ru/post/484738/


All Articles