Prepare seu aplicativo Laravel para a nuvem

Prepare your Laravel app for the cloud image

Os anúncios recentes em LaraconEUA despertaram um interesse renovado em implantações baseadas em nuvem dentro da comunidade Laravel. À medida que o debate continua sobre uma vez que implantar seus aplicativos, uma coisa está clara: a nuvem está se tornando uma opção mais viável para usuários do Laravel.

Neste item, exploraremos uma vez que preparar seu aplicativo Laravel para implantação em um envolvente de nuvem usando FrankenPHP, CaddyDockerfiles e, finalmente, implantá-lo em Sevilha.

Logo por onde começamos? No envolvente sítio, é evidente! 🤓

Envolvente de desenvolvimento sítio

Para simplificar, vamos supor que você tenha um novo aplicativo Laravel instalado em sua máquina sítio, que se conecta a um banco de dados PostgreSQL para ler/gravar alguns dados.

Antes de prosseguirmos, certifique-se de ter um .env registo na raiz do seu projeto com o seguinte teor:

.env:

...

DB_CONNECTION=pgsql

...

Depois que isso for verificado, podemos iniciar a edificar. 🤓 ☕️

É sempre uma boa teoria ter um envolvente de desenvolvimento sítio que se assemelhe bastante ao seu envolvente de produção. Dessa forma, você pode detectar quaisquer problemas logo no início e evitar surpresas ao implantar seu aplicativo em produção.

Para imitar a forma de produção que usaremos, contaremos com o Docker e o Docker Compose. Se você não tiver o Docker instalado em sua máquina, você pode baixá-lo do site solene.

Executando Laravel sem o banco de dados

Primeiro, crie um novo registo chamado compose.yml na raiz do seu projeto Laravel e adicione o seguinte teor:

compose.yml:

services:

Sua visita nos ajuda a continuar oferecendo o melhor para você! php:

image: dunglas/frankenphp:php8.3-alpine

command: php artisan serve --host 0.0.0.0 --port 8080

ports:

- 8080:8080

Sua visita nos ajuda a continuar oferecendo o melhor para você! volumes:

- .:/app

Nascente registo de forma define um serviço chamado php que usa o dunglas/frankenphp:php8.3-alpine image, que é uma imagem FrankenPHP ligeiro que inclui extensões necessárias para executar um aplicativo Laravel. Também expomos a porta 8080 para acessar o aplicativo a partir da máquina host.

Para testar sua forma, tente executar o seguinte comando no seu terminal:

docker compose up [-d]

Você deverá ver uma página de erro do Laravel explicando que a conexão não foi estabelecida com o banco de dados devido a um driver ausente ao velejar para http://0.0.0.0:8080 no seu navegador. Isso é esperado, pois ainda não conectamos nosso aplicativo Laravel a um banco de dados.

Incrível, até agora configuramos nosso aplicativo Laravel para ser atendido por um tempo de realização FrankenPHP em realização php artisan serve.

Em seguida, vamos conectar nosso aplicativo sítio a um banco de dados PostgreSQL!

Executando Laravel com o banco de dados

Para conectar seu aplicativo Laravel a um banco de dados PostgreSQL, precisaremos fazer algumas coisas.

Primeiro, precisamos definir as seguintes variáveis ​​de envolvente em seu .env registo:

.env:

...

DB_CONNECTION=pgsql

DB_HOST=db

DB_PORT=5432 # default PostgreSQL port

DB_DATABASE=main

DB_USERNAME=admin

DB_PASSWORD=password

Depois disso, você precisará juntar novos serviços ao seu compose.yml registo e crie um personalizado Dockerfile para seu envolvente dev. Crie e atualize os arquivos com o seguinte teor:

Dockerfile.dev:

FROM dunglas/frankenphp:php8.3-alpine

 

RUN install-php-extensions pdo_pgsql

Dockerfile.dev destina-se exclusivamente a ser usado pelo seu envolvente sítio/de desenvolvimento e estende o dunglas/frankenphp:php8.3-alpine imagem para incluir o pdo_pgsql extensão, necessária para conectar-se a um banco de dados PostgreSQL.

compose.yml:

services:

init:

build:

dockerfile: Dockerfile.dev

command: php artisan migrate

depends_on:

db:

condition: service_healthy

volumes:

- .:/app

php:

build:

context: .

dockerfile: Dockerfile.dev

command: php artisan serve --host 0.0.0.0 --port 8080

ports:

- 8080:8080

depends_on:

init:

condition: service_completed_successfully

volumes:

- .:/app

db:

image: postgres:16.4-alpine

environment:

POSTGRES_USER: admin

POSTGRES_PASSWORD: password

POSTGRES_DB: main

volumes:

- /var/lib/postgresql/data

healthcheck:

test: pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB

interval: 1s

Há muita coisa acontecendo cá, vamos dar uma olhada no que mudou e por quê:

  1. Nós atualizamos o php serviço para usar um Dockerfile personalizado chamado Dockerfile.dev para edificar uma novidade imagem que inclua as extensões necessárias para se conectar a um banco de dados PostgreSQL.
  2. Adicionamos um novo serviço chamado db que usa o postgres:16.4-alpine imagem para executar um banco de dados PostgreSQL. Também definimos algumas variáveis ​​de envolvente para configurar o usuário, senha e nome do banco de dados.
  3. Criamos um novo volume chamado db_data para persistir os dados no banco de dados da sua máquina, e o Docker poderá reutilizá-los quando você reiniciar os serviços.
  4. Um novo serviço chamado init também foi adicionado que reutiliza Dockerfile.dev. Esta imagem é usada para executar o php artisan migrate comando para executar suas migrações de banco de dados. O depends_on chave garante que o db o serviço está instalado e funcionando antes das migrações serem executadas.
  5. O php o serviço agora depende do init serviço para prometer que as migrações do banco de dados sejam executadas antes do aplicativo Laravel iniciar.
  6. Adicionamos uma verificação de saúde ao db serviço para prometer que o banco de dados PostgreSQL esteja instalado e funcionando antes do init serviço executa as migrações.

Para testar sua forma, execute o seguinte comando no seu terminal:

docker compose up --build

Agora seu aplicativo deve estar se conectando ao seu banco de dados PostgreSQL, e suas migrações de banco de dados serão sempre executadas. 🎉

Seu envolvente sítio agora está pronto para imitar seu envolvente de produção. Agora você pode desenvolver seu aplicativo localmente e testar uma forma realmente similar que você usará em produção.

Preparando para produção

É hora de fazer as mudanças necessárias no seu envolvente de produção.

O primeiro passo é proferir ao Docker quais diretórios ele pode ignorar com segurança ao edificar a imagem de produção. Crie um novo registo chamado .dockerignore na raiz do seu projeto Laravel e adicione o seguinte teor:

.dockerignore:

vendor

bootstrap/chache/*

tests

Nascente registo informa ao Docker para ignorar o vendor, bootstrap/cachee tests diretórios.

Em seguida, crie um Dockerfile que será usado para edificar sua imagem de produção:

Dockerfile:

FROM dunglas/frankenphp:php8.3-alpine

 

ENV SERVER_NAME=":8080"

 

RUN install-php-extensions @composer pdo_pgsql

 

WORKDIR /app

 

COPY . .

 

RUN composer install

--ignore-platform-reqs

--optimize-autoloader

--prefer-dist

--no-interaction

--no-progress

--no-scripts

Esse Dockerfile é semelhante ao Dockerfile.dev criamos anteriormente, mas inclui algumas etapas adicionais:

  1. Uma vez que a imagem FrankenPHP usa o Caddy uma vez que servidor web padrão, definimos o SERVER_NAME variável de envolvente para :8080 para instruir o Caddy a escutar na porta 8080.
  2. Nós instalamos o @composer Extensão PHP para instalar o Composer na imagem.
  3. composer install O comando é executado para instalar as dependências do seu aplicativo Laravel.
  4. Definimos o diretório de trabalho para /app e copiou o teor do seu aplicativo Laravel para a imagem.

Para testar suas alterações em seu envolvente sítio, você precisará produzir uma compilação de produção do seu aplicativo. Execute o seguinte comando em seu terminal:

docker build -t my-laravel-app .

Nascente comando cria uma novidade imagem Docker chamada my-laravel-app com base no Dockerfile no diretório atual.

Para testar sua imagem de produção recém-criada, use o seguinte comando:

docker run -p 8080:8080 -e APP_KEY=<your-app-key> my-laravel-app

Substituir com o valor do APP_KEY variável de envolvente em seu .env registo ou pegue uma chave de .

Visite 0.0.0.0:8080 no seu navegador, e seu aplicativo deve iniciar no modo de produção. Pode dar erro devido à falta de uma conexão com o banco de dados, mas isso é esperado.

Implantando na nuvem

Agora que você tem uma imagem do Docker pronta para produção, você pode implantá-la em um provedor de nuvem. 🚀

Neste tutorial, usaremos Sevilhaum novo provedor de nuvem que oferece uma maneira simples de implantar Dockerfileimplantações baseadas em.

Uma vez que seu aplicativo depende de um banco de dados PostgreSQL, é melhor provisionar um novo banco de dados PostgreSQL no Sevalla primeiro. Depois de fazer login no Quadro de instrumentos Sevalla,

  1. Navegue até o modal Gerar banco de dados
  2. Selecione o banco de dados PostgreSQL
  3. Confirme as configurações e crie o banco de dados

Quando seu banco de dados estiver pronto, você pode fabricar seu aplicativo Laravel no Sevalla.

  1. Navegue até o modal Gerar aplicativo
  2. Selecione o repositório do seu aplicativo no seu provedor Git preposto
  3. Certifique-se de selecionar o mesmo data center em que seu banco de dados está
  4. Defina o APP_KEY variável de envolvente necessária pelo Laravel
  5. Selecione Dockerfile uma vez Sua visita nos ajuda a continuar oferecendo o melhor para você! tipo de construção
  6. Confirme o restante das configurações e clique no botão “Implementar mais tarde”

Se seu aplicativo estiver pronto, agora você pode conectá-lo ao seu banco de dados PostgreSQL.

  1. Navegue até a página do aplicativo
  2. Vá para a aba “Rede”
  3. Clique no botão “Aditar conexão” e selecione seu banco de dados PostgreSQL
  4. Confirme as configurações e clique em “Conectar”

Em seguida, defina as seguintes variáveis ​​de envolvente na aba “Variáveis ​​de envolvente” com os detalhes de conexão do seu banco de dados:

  • DB_CONNECTION
  • DB_HOST
  • DB_PORT
  • DB_DATABASE
  • DB_USERNAME
  • DB_PASSWORD

Recomendamos usar o endereço de rede interno do seu banco de dados uma vez que DB_HOST valor. Dessa forma, seu aplicativo pode se conectar ao banco de dados por meio de uma rede privada.

A última lanço é configurar um processo de trabalho para seu aplicativo para executar as migrações do banco de dados antes de iniciar o aplicativo.

  1. Navegue até a aba “Processos”
  2. Clique no botão “Gerar processo” e selecione “Trabalho”
  3. Defina o comando para php artisan migrate --force
  4. Defina a política de início uma vez que “Antes da implantação”
  5. Confirme as configurações e clique em “Gerar”

Se isso também for feito, agora você pode iniciar uma implantação manual do seu aplicativo na aba Implantações. 🎉

Se tudo correu muito, parabéns! Você preparou com sucesso seu aplicativo Laravel para a nuvem. 🚀

Desfecho

Neste item, exploramos:

  • Uma vez que configurar seu envolvente sítio para imitar seu envolvente de produção usando Docker e docker compose.
  • Uma vez que preparar seu aplicativo Laravel para implantação em um envolvente de nuvem usando Docker, FrankenPHP e Caddy.
  • Também abordamos uma vez que implantar seu aplicativo em um provedor de nuvem uma vez que Sevilha.

Seguindo essas etapas, você pode levar seu aplicativo Laravel a novos patamares e aproveitar os benefícios das implantações baseadas em nuvem. 🌤

Tags:

Crédito: Natividade Original

Adriano Pina

Adriano Pina

Análise de Sistemas | SEO e Google Ads | Fundador da Loja Script PHP Aqui & Marca Shoslh de tecnologia

Especialista em transformar ideias em soluções digitais e acelerar o crescimento online.

Deixe um comentário

Tem perguntas? Nos envia sua mensagem 24/7!

(17) 99100-0874

Endereço & Contato

Centro, Interior de São Paulo
E-mail: [email protected]

Links Úteis
BAIXAR APP | SCRIPT PHP AQUI
Certificados
0
    0
    Seu carrinho
    Seu carrinho está vazio

    Usamos cookies para garantir que oferecemos a melhor experiência em nosso site. 

       

    X

    Clique em um de nossos representantes abaixo para conversar no WhatsApp ou envie um email para: 📧 [email protected]

    Precisa de ajuda fale conosco?