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.
📊 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
- Deploy em VPS (DigitalOcean/Linode):
- Configuração manual do Nginx, PHP e Banco.
-
Uso de ferramentas como o Laravel Forge para automação.
-
Deploy em Cloud/PaaS (Heroku/Railway):
- Deploy baseado em Git (
git push production). - 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
- Básico: Instale o Docker em sua máquina e tente subir um projeto novo usando o Laravel Sail.
- Intermediário: Altere o arquivo
docker-compose.ymlpara adicionar um serviço de Adminer (gerenciador de banco visual). - Desafio: Crie um script bash simples que automatize o processo de
git pull,composer installephp artisan migrateno 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.