Pular para conteúdo

Aula 15 - Docker e Deploy 🐳🚀

🎯 Objetivo da Aula

Preparar sua aplicação para o mundo real. Vamos aprender a "containerizar" o Laravel usando Docker, configurar o ambiente de produção com o arquivo .env e entender as estratégias de deploy em VPS ou Cloud.


🐳 Docker e Laravel Sail

O Docker garante que a aplicação funcione exatamente igual na sua máquina e no servidor. O Laravel fornece o Sail, uma interface CLI leve para interagir com o Docker.

# Subindo todo o ambiente (PHP, MySQL, Redis)
$ ./vendor/bin/sail up -d

# Executando comandos artisan dentro do container
$ sail artisan migrate

📊 Estrutura de Containers

graph TD
    A[Nginx/Apache] --> B[Laravel PHP-FPM]
    B --> C[MySQL Database]
    B --> D[Redis Cache/Queue]
    B --> E[Mailpit (Teste de Email)]

⚙️ Configuração de Produção

No servidor, algumas regras mudam drasticamente: - APP_ENV=production - APP_DEBUG=false (CRITICAL!) - PHP artisan config:cache (Para performance)


🚀 Estratégias de Deploy

  1. Deploy em VPS (DigitalOcean/Linode):
  2. Configuração manual do Nginx, PHP e Banco.
  3. Uso de ferramentas como o Laravel Forge para automação.

  4. Deploy em Cloud/PaaS (Heroku/Railway):

  5. Deploy baseado em Git (git push production).
  6. Containers prontos para escalar.

🧠 Blocos de Destaque

CI/CD com GitHub Actions

Você pode configurar o GitHub para rodar seus testes automaticamente a cada git push e, se tudo passar, realizar o deploy para o servidor.


🛠️ Exercícios Progressivos

  1. Básico: Instale o Docker em sua máquina e tente subir um projeto novo usando o Laravel Sail.
  2. Intermediário: Altere o arquivo docker-compose.yml para adicionar um serviço de Adminer (gerenciador de banco visual).
  3. Desafio: Crie um script bash simples que automatize o processo de git pull, composer install e php artisan migrate no servidor.

🚀 Mini-Projeto da Aula

Ambiente Próximo da Produção: Configure um arquivo docker-compose.yml que contenha: WordPress (ou outro serviço), Laravel, MySQL e um Container de Proxy. Garanta que a aplicação Laravel consiga se conectar ao banco de dados usando apenas o nome do serviço definido no Docker.


Próxima Aula: Projeto Final