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 LaravelComece 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 localmenteEm 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 GitHubCrie um novo repositório no GitHub, como mostrado abaixo:

4.
Adicione o repositório e o READMEAgora 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 .
Depois de executar o comando no meu repositório no GitHub, o seguinte apareceu:
5. Adicione o Laravel completo, abra o Pull RequestAgora 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 GitHubNã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 localmenteAgora 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
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:
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
[](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 RunApó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:
- 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:
- Após escolher uma região, o script criou uma imagem do contêiner do Dockerfile no repositório;
- Ele então empurrou a imagem montada para o Google Container Registry;
- 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 .