Passo a passo de integração contínua para o Laravel 6 no Google Cloud Run

Olá pessoal! Antecipando o início dos cursos “Framework Laravel” e “Backend-developer in PHP” , continuamos a compartilhar material interessante sobre o assunto. Vamos lá




Nos últimos anos, a popularidade do Laravel aumentou dramaticamente . A comunidade do Laravel é mesmo da opinião de que o Laravel tornou o processo de trabalho em PHP mais agradável em comparação com a dor de antes. O Laravel 6 possui alguns novos recursos interessantes . A obtenção de um URL de trabalho super escalável para seu aplicativo leva horas, se não dias. E criar algo como o Kubernetes é uma tarefa assustadora. É nesses casos que o Google Cloud Run é a melhor opção, pois com ele você pode obter um URL de HTTPs em funcionamento para qualquer um dos seus aplicativos de contêiner em minutos.

O Google Cloud Run não tem servidor e é totalmente gerenciado pelo Google. Você obtém URLs HTTPs de superescalonamento por pagamento por segundo e seu próprio mapeamento de domínio.

Se você deseja executar contêineres sem estado, o Cloud run é a maneira mais fácil de fazer isso. Neste artigo, explicarei em detalhes como fazer com que seu aplicativo Laravel 6 seja executado na nuvem do Google com Continuous Integration (CI).

Requisitos Necessários


  • Você está familiarizado com o PHP / Composer e conhece o Laravel (acho que não estaria aqui);
  • Você sabe como usar o Git no console;
  • Seu código de CI / CD está hospedado no GitHub e você sabe como usá-lo;
  • Você conhece o Docker, talvez até a montagem em vários estágios;
  • Você tem uma conta do Google Cloud em funcionamento (eles concedem um empréstimo sem juros de US $ 300 por 1 ano, não há motivo para não iniciá-lo).

Por que o Cloud Run é ótimo para iniciantes


Por duas razões, que descreverei abaixo:

  • Você aprenderá sobre as práticas recomendadas e softwares como Docker e CI / CD.
  • O quadro principal funcionará após clicar em um botão, escolhendo duas coisas e cinco minutos de espera, e você poderá obter um URL de HTTPs funcionando. Quanto mais fácil?

Etapas de implantação


A seguir, é apresentado um guia para configurar e implantar o Laravel 6 no Cloud Run:

1. Clone o Laravel ou um novo projeto do Laravel

Comece clonando o Laravel ou use o compositor ou o Laravel CLI, conforme indicado no guia de instalação oficial.

Eu uso o compositor para obter a versão mais recente do Laravel, como mostrado abaixo:

composer global require laravel/installer 

Executei o seguinte comando para obter a versão mais recente do Laravel:

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



2. Primeiro teste localmente

Em seguida, execute o cd laravel6-on-google-cloud-run e, em seguida, o php artisan serve . Para ver que tudo funciona, fui ao endereço http: // localhost: 8000 no navegador e funcionou para mim. Eu tinha o PHP 7.2 instalado localmente.



3. Crie um novo repositório no GitHub

Crie um novo repositório no GitHub, como mostrado abaixo:



4. Adicione o repositório e o README

Agora que você criou o repositório, adicione-o à cópia local do Laravel e adicione o arquivo README.
Para fazer isso, execute os seguintes comandos no console:

 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 

Depois de executar o comando no meu repositório no GitHub, o seguinte apareceu:



5. Adicione o Laravel completo, abra o Pull Request

Agora vamos enviar o aplicativo inteiro como uma solicitação pull ao repositório GitHub executando os seguintes comandos:

Depois disso, abra a solicitação de recebimento no repositório, assim. Talvez você pense por que preciso de uma solicitação pull se estou trabalhando em um projeto sozinho?

Bem, acho que você deve sempre seguir uma abordagem sistemática, mesmo que trabalhe sozinho.
Depois disso, diminua a velocidade da sua solicitação de recebimento.

6. Teste a configuração com ações do GitHub

Não é a parte divertida. Depois de apresentar sua solicitação de recebimento, o GitHub saberá que este é um projeto do Laravel. Clique na guia Actions na página do seu repositório e você verá algo como o mostrado abaixo:



Clique em Configurar este fluxo de trabalho no Laravel e, na página seguinte, clique no botão Iniciar confirmação no canto superior direito. Depois disso, adicione a mensagem de confirmação, como mostrado abaixo, e clique em Confirmar novo arquivo .



Foi assim que você conseguiu a instalação do seu IC. Os testes do Laravel, por padrão, agora serão executados a cada push do git. Isso é difícil?
Obrigado ao Great Mind GitHub!
Chega de criar arquivos .myCIname.yml !

7. Adicione a janela de encaixe e execute a janela de composição para executar o aplicativo localmente

Agora vamos adicionar o docker e fazer o docker-composer para executar o aplicativo localmente sem PHP ou serviço de artesão .

Esta parte do tutorial é inspirada no artigo Laravel de Nicolas no Google Cloud Run .

Se você quiser saber mais sobre o Docker e o Laravel, consulte este artigo .

Para começar, execute os seguintes comandos para atualizar a ramificação principal, pois adicionamos um novo arquivo de fluxo de trabalho usando a interface do GitHub:

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

Adicione a chave ao arquivo .env.example , copie-o do arquivo .env , conforme mostrado abaixo:

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

Como esta é apenas uma demonstração, você pode fazer isso, mas em aplicativos reais, tenha cuidado com os segredos. Para aplicativos prontos para produção, desative a depuração e outras coisas relacionadas ao desenvolvimento.

Adicione um Dockerfile à raiz do projeto:

 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 

Adicione o seguinte arquivo ao 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> 

Depois disso, adicione o docker-compose.yml :

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

Vamos reduzir tudo para o principal.

Se você está tentando entender tudo o que está escrito aqui, pode ser exaustivo, então deixe-me falar sobre as principais partes:

  • Usamos a imagem oficial do docker PHP Apache para executar o Laravel, que possui a versão 7.3 do PHP.
  • Usamos uma compilação de vários estágios para obter dependências com o Composer e, em seguida, copiamos para a imagem principal do docker, que possui PHP 7.3 e Apache.
  • Como o Google Cloud Run exige que o servidor da Web escute na porta 8080, usamos 000-default.conf para configurá-lo.
  • Para facilitar a execução do docker-compose, digite apenas um comando docker-compose up.
  • Agora que você leu até esse momento, execute o docker-compose a partir da raiz e tudo deve funcionar em http://localhost:8080 ; nesse caso, você entenderá que o Laravel 6 está sendo executado localmente no Docker.

Abaixo, você vê a saída após executar o docker-compose up o final:



Se você tem o Laravel trabalhando com o Docker, abra uma nova solicitação de recebimento (por exemplo, uma ) e adicione o Docker ao seu projeto.

Executei os seguintes comandos na raiz do projeto antes de abrir a solicitação de recebimento:

 git status 

Você obterá algo como isto:

 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) 

E execute os seguintes comandos:

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

Como bônus, eles executarão o teste padrão do Laravel após o envio, como mostrado abaixo:



Somente o proprietário do repositório tem acesso à guia Ações, para que outras pessoas não precisem saber os resultados de suas compilações de teste

8. Adicione uma implantação ao botão Google Cloud .

Agora, vamos implantar esta instalação do Laravel no Google Cloud Run de uma maneira simples. Nesta fase, acredita-se que você organizou sua solicitação de recebimento na ramificação do docker.

Vamos executar os seguintes comandos:

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

Adicione o seguinte ao seu arquivo 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)


Substitua cuidadosamente a última parte da URL HTTPs do seu repositório, por exemplo, se o seu repositório estiver localizado no endereço para o qual ele será alterado, confirme e envie por push .

Sua solicitação de recebimento deve se parecer com isso .

9. Implante no Google Cloud Run

Após a mesclagem da sua solicitação pull, acesse a página do repositório e clique no botão Executar no Google Cloud .



Depois disso, se você estiver conectado à sua conta do Google e tiver a configuração da nuvem do Google com um projeto, clique no botão "Continuar". Você pode ter que esperar um pouco, depois disso:

  1. Escolha um projeto - Escolha um projeto para implantar este aplicativo
    Escolha uma região - Escolha uma região para implantar esse aplicativo, geralmente eu escolho us-central-1
    Então aguarde o contêiner coletar e expandir, o processo no meu caso se parece com o seguinte:

Se tudo correr bem, no Google Cloud Shell você verá os URLs HTTPs nos quais você pode clicar para ver se o seu aplicativo Laravel está em execução, conforme mostrado abaixo:



O que aconteceu acima é o seguinte:

  1. Após escolher uma região, o script criou uma imagem do contêiner do Dockerfile no repositório;
  2. Ele então empurrou a imagem montada para o Google Container Registry;
  3. Depois disso, usando a CLI do gcloud, ele implementa a imagem montada no Cloud Run, que retorna a URL.

10. Viva! Sua inscrição está funcionando!

Depois de obter o URL, você verá seu aplicativo sendo executado no Google Cloud Run, como mostrado abaixo:



Se você deseja implantar uma versão diferente, pode alterar sua solicitação de recebimento para mestre e clicar no botão novamente para a implantação.

Mais sobre o Google Cloud Run


Os preços para o Google Cloud Run são muito generosos. Você pode executar qualquer aplicativo em um contêiner ou aplicativo da Web no Google Cloud Run.

Executei um projeto doméstico que recebia 1 solicitação por minuto e não precisava pagar nada.

Sob o capô, ele usa Knative e Kubernetes. Ele também pode ser executado em seu cluster Kubernetes, mas quem deseja gerenciar o cluster K8s se você pode simplesmente enviar e aprender um aplicativo totalmente gerenciado e sem servidor escalável

TLDR


Para iniciar o Laravel 6 no Google Cloud Run rapidamente, siga estas etapas:






Conclusão


Esperamos que a execução do aplicativo Laravel no Google cloud run tenha sido uma tarefa simples para você. Você foi capaz de executar testes com ações do Github. Espero que este artigo tenha sido útil para você.

Para adotar a abordagem de CI / CD, você pode ler este artigo , que fala sobre o uso de compilações na nuvem. Como o mesmo contêiner trabalha localmente e em produção (Google Cloud Run), você não precisa aprender uma nova estrutura para mudar para uma arquitetura sem servidor.

Qualquer aplicativo da Web no contêiner pode ser executado no Google Cloud Run, por isso considero um ótimo serviço!


É tudo, e lembramos que, nos dias 21 e 22 de janeiro, todos poderão visitar o intensivo on-line gratuito , no âmbito do qual criaremos um bot do Telegram para pedir café no estabelecimento e pagar on-line. Você pode se inscrever para o segundo dia intensivo aqui .

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


All Articles