Como configurar Laravel 11 com Nginx e MySQL usando Docker Compose em 2026

Como configurar Laravel 11 com Nginx e MySQL usando Docker Compose em 2026
Como configurar Laravel 11 com Nginx e MySQL usando Docker Compose em 2026

Laravel com Compose oferece um ambiente consistente e eficiente para desenvolvimento, integrando PHP-FPM, e com facilidade e segurança. Essa configuração melhora performance, simplifica o gerenciamento de containers e garante persistência de dados, sendo ideal para projetos modernos em ambiente local ou produção.

Quer montar um ambiente Laravel moderno e confiável? Laravel 11 com Nginx e MySQL usando pode facilitar muito o desenvolvimento, configurando um ambiente consistente e fácil de escalar. Bora entender como tudo isso funciona juntos?

Introdução ao Docker Compose para Laravel

O Docker Compose é uma ferramenta que ajuda a criar e gerenciar vários containers Docker ao mesmo tempo. Para projetos Laravel, ele facilita muito montar o ambiente de desenvolvimento. Com o Compose, você pode juntar PHP, Nginx e MySQL em um só lugar. Isso evita conflitos entre versões e configurações diferentes no seu computador. Além disso, você pode compartilhar o mesmo setup com colegas, garantindo que tudo funcione igual para todos. Usar Docker Compose deixa seu projeto mais organizado e fácil de manter.

Requisitos para o ambiente Laravel com Docker

Para montar um ambiente Laravel com Docker, alguns requisitos básicos são essenciais. Primeiro, instale o Docker e o Docker Compose no seu computador. Eles vão gerenciar os containers e orquestrar os serviços. Você também precisa do Laravel instalado no projeto, que pode ser baixado via Composer. O PHP na versão 8.3 ou superior é necessário para garantir compatibilidade com as novidades do Laravel 11. Além disso, o MySQL deve estar configurado como banco de dados, preferencialmente versão 8.4, para suportar as features modernas. Por fim, é importante ter uma imagem do Nginx para servir o Laravel com boa performance. Com tudo isso, seu ambiente Docker estará pronto para rodar o Laravel de forma prática e eficiente.

Passo 1: Baixando Laravel e instalando dependências com Docker

Para começar, você precisa baixar o Laravel usando o Docker para garantir um ambiente isolado. Abra o terminal e use um container PHP com Composer para criar o projeto Laravel. Isso evita problemas com versões e dependências no seu computador. No terminal, execute o comando que roda o Composer dentro do container. Ele vai baixar o Laravel e instalar as dependências automaticamente. Tudo é feito dentro do Docker, deixando seu ambiente limpo e fácil de replicar. Assim, você garante que todas as dependências do Laravel estejam corretas e atualizadas.

Passo 2: Criando o arquivo docker-compose.yml

O arquivo docker-compose.yml é essencial para definir todos os serviços que seu projeto Laravel vai usar. Nele, você especifica containers para PHP, Nginx e MySQL, além dos volumes para persistência dos dados. Cada serviço tem suas configurações, como portas e dependências. Com esse arquivo, você inicia tudo com um único comando, deixando o ambiente fácil de manter. É importante usar versões compatíveis das imagens Docker e configurar as redes para que os containers se comuniquem bem. O docker-compose facilita muito a gestão do projeto e evita erros manuais.

Passo 3: Persistência de dados com volumes e bind mounts

Ao usar Docker para Laravel, é importante garantir que seus dados não sejam perdidos quando o container parar. Para isso, usamos volumes e bind mounts. Volumes são áreas no host que armazenam dados fora do container. Já os bind mounts conectam pastas do seu computador direto ao container. Com eles, os arquivos do Laravel e do banco de dados ficam seguros e persistentes. Assim, você pode reiniciar ou recriar containers sem perder nada. Configurar corretamente volumes e bind mounts evita problemas na hora de salvar dados e facilita o desenvolvimento.

Passo 4: Criando o Dockerfile para PHP 8.3-FPM

O Dockerfile define como criar a imagem do container que vai rodar o PHP 8.3-FPM, essencial para Laravel. Nele, você escolhe a base oficial do PHP 8.3 com FPM, que é uma versão otimizada para processar pedidos. É importante instalar extensões do PHP necessárias para o Laravel, como PDO, Mbstring e Tokenizer. Também configuramos permissões corretas para o Laravel funcionar sem problemas. Com esse Dockerfile, você tem um ambiente PHP personalizado e leve, pronto para atender o Laravel com alta performance e segurança.

Passo 5: Configurações básicas de PHP no local.ini

O arquivo local.ini é usado para ajustar opções do PHP dentro do container. Nele, você pode aumentar o limite de memória, tempo máximo de execução e tamanho permitido para uploads. Essas configurações são importantes para que o Laravel funcione sem travar em processos pesados. Por exemplo, definir memory_limit=256M evita erros em tarefas complexas. Também ajustamos o upload_max_filesize para permitir arquivos maiores, se necessário. Personalizar o local.ini garante que o ambiente PHP no Docker esteja consumindo recursos de forma eficiente para o Laravel.

Passo 6: Configurando Nginx para usar PHP-FPM

O Nginx é o servidor web responsável por receber as requisições e entregá-las ao PHP via PHP-FPM. Para isso, configuramos um arquivo com as regras necessárias, incluindo o endereço de conexão do PHP-FPM. Usamos o socket ou a porta para essa comunicação. Além disso, definimos as pastas raiz do Laravel para que o Nginx sirva apenas os arquivos públicos, garantindo segurança. Essa configuração também permite lidar com URLs amigáveis usando o arquivo index.php. Ajustar bem o Nginx é essencial para garantir que o Laravel rode rápido e sem erros dentro do Docker.

Passo 7: Configuração personalizada do MySQL

Configurar o MySQL de forma personalizada no Docker ajuda a melhorar o desempenho e a segurança do banco. Você pode definir variáveis importantes, como usuário, senha e nome do banco via environment. Também é possível montar um volume para que os dados fiquem salvos fora do container. Além disso, ajustes no arquivo de configuração do MySQL podem ser aplicados para otimizar consultas e conexões. Essas configurações garantem que seu Laravel tenha um banco estável e seguro durante o desenvolvimento e testes no Docker.

Passo 8: Ajustando variáveis de ambiente e iniciando containers

As variáveis de ambiente são usadas para configurar o Laravel e os serviços dentro dos containers Docker. Você deve definir valores como nome do banco, usuário, senha e host no arquivo .env do Laravel. Também é importante ajustar variáveis no docker-compose.yml para garantir comunicação entre containers. Depois de tudo configurado, use o comando docker-compose up -d para iniciar os containers em segundo plano. Esse comando sobe todos os serviços definidos no Compose, deixando o ambiente pronto para desenvolvimento. Ajustar variáveis corretamente evita erros e facilita o uso do Docker com Laravel.

Passo 9: Criando usuário dedicado no MySQL para Laravel

Para melhorar a segurança, é essencial criar um usuário dedicado no MySQL para o Laravel. Esse usuário terá acesso apenas ao banco do projeto, evitando riscos desnecessários. Você pode criar ele via comandos SQL dentro do container ou no arquivo de configuração do banco. Defina um nome de usuário e senha fortes. Depois, configure o Laravel para usar esses dados no arquivo .env. Ter um usuário exclusivo ajuda a proteger as informações e facilita a gestão do banco no Docker.

Passo 10: Executando migrations e usando o Tinker Console

Para atualizar o banco de dados Laravel, usamos migrations. Elas ajudam a criar e alterar tabelas facilmente. No Docker, rode o comando php artisan migrate dentro do container PHP. Isso aplica todas as mudanças pendentes no banco MySQL. Além disso, o Tinker é uma ferramenta poderosa para interagir com o Laravel via linha de comando. Você pode abrir o Tinker com php artisan tinker no container, permitindo testar códigos, manipular dados e executar comandos rápidos. Usar migrations e o Tinker garante controle e agilidade no desenvolvimento com Docker.

Principais erros comuns e suas soluções

Muitas vezes, ao usar Laravel com Docker, alguns erros comuns aparecem. Um problema frequente é a conexão falha com o banco MySQL. Isso geralmente é causado por variáveis de ambiente erradas ou containers que não comunicam direito. Outro erro é a falta de permissões nas pastas do Laravel, que bloqueia o acesso a arquivos. Também é comum esquecer de criar volumes para dados, causando perda de informações após reiniciar containers. Para resolver, verifique as configurações no docker-compose.yml e ajuste permissões usando comandos como chmod. Sempre revise o arquivo .env para garantir que os dados estão corretos. Esses cuidados evitam vários problemas no desenvolvimento.

Diferenças entre PHP-FPM e Apache no Laravel

PHP-FPM e Apache são jeitos diferentes de rodar PHP no servidor. O PHP-FPM é focado em performance e usa menos memória. Ele processa pedidos PHP separadamente, o que ajuda o Laravel a ser mais rápido. Já o Apache é um servidor web mais tradicional que integra PHP direto, mas pode consumir mais recursos. No Docker, PHP-FPM é popular porque é leve e fácil de configurar com Nginx. Apache tem funções extras, mas no Laravel, PHP-FPM costuma ser a melhor escolha para projetos modernos e escaláveis.

Como executar comandos Artisan dentro do container

Para executar comandos Artisan do Laravel dentro do container Docker, use o comando docker exec. Esse comando permite acessar o terminal do container em execução. Por exemplo, para rodar migrations, você pode usar: docker exec -it nome_do_container php artisan migrate. Assim, o Artisan roda dentro do ambiente Docker, garantindo que todas as dependências estejam disponíveis. Esse método facilita executar comandos como cache:clear, make:model e outros, sem precisar sair do container. É uma maneira prática para gerenciar seu projeto Laravel no Docker.

Considerações para Apple Silicon (M1/M2/M3)

Quem usa Mac com chip Apple Silicon (M1, M2 ou M3) pode precisar ajustar o Docker para garantir compatibilidade. Nem todas as imagens Docker oficiais funcionam nativamente nesses chips ARM. Por isso, é recomendável usar imagens compatíveis com arquitetura ARM64 ou configurar o Docker Desktop para usar emulação. Isso pode afetar a performance, mas garante que o Laravel rode corretamente. Além disso, fique atento às versões do PHP e MySQL usadas, escolhendo imagens que tenham suporte para Apple Silicon. Testar seu ambiente é fundamental para evitar erros inesperados durante o desenvolvimento.

Dicas de segurança e permissões para Laravel em Docker

Quando usar Laravel com Docker, é importante cuidar da segurança e permissões. O Laravel precisa de permissões corretas nas pastas storage e bootstrap/cache para funcionar direito. Use comandos como chmod para ajustar acessos. Evite dar permissões totais, pois isso pode abrir brechas. Também configure usuários dentro do container para limitar acesso. Proteja variáveis de ambiente, nunca expondo senhas publicamente. Use redes Docker isoladas para evitar conexões não autorizadas. Essas práticas garantem que seu ambiente Laravel seja seguro e estável no Docker.

Preparação para ambiente de produção com Docker

Preparar o ambiente Docker para produção requer atenção especial. Use imagens oficiais atualizadas e estáveis para PHP, Nginx e MySQL. Configure variáveis de ambiente de forma segura, sem expor senhas publicamente. Ative caches e otimizações do Laravel, como config:cache e route:cache. Garanta que volumes armazenem logs e dados persistentes corretamente. Configure o Nginx para lidar com HTTPS e headers seguros. Monitore containers para detectar problemas rápido. Tenha backups automáticos do banco. Um ambiente bem preparado reduz riscos e melhora a performance do Laravel em produção usando Docker.

Considerações finais sobre como configurar Laravel 11 com Nginx e MySQL usando Docker Compose

Configurar Laravel 11 com Nginx e MySQL usando Docker Compose facilita muito o desenvolvimento e garante um ambiente consistente. Com os passos certos, você monta uma estrutura prática e eficiente, evitando erros comuns. Lembre-se sempre de ajustar permissões e configurar variáveis de ambiente com cuidado. Também é importante adaptar o Docker para seu sistema, especialmente em Macs com Apple Silicon. Preparar o ambiente para produção garante mais segurança e estabilidade. Seguindo essas dicas, seu projeto Laravel vai crescer com mais facilidade e confiabilidade.

FAQ – Perguntas frequentes sobre como configurar Laravel 11 com Nginx e MySQL usando Docker Compose

O que é Docker Compose e por que usar com Laravel?

Docker Compose é uma ferramenta que ajuda a gerenciar múltiplos containers Docker. Usá-lo com Laravel facilita configurar todo o ambiente de desenvolvimento de forma rápida e organizada.

Quais serviços preciso configurar no Docker para Laravel?

Os principais serviços são PHP (preferencialmente PHP-FPM), Nginx para o servidor web e MySQL para o banco de dados.

Como garantir que os dados não sejam perdidos ao reiniciar os containers?

Use volumes e bind mounts para persistir os dados do banco e arquivos do Laravel fora dos containers.

Qual a diferença entre PHP-FPM e Apache no Docker para Laravel?

PHP-FPM é mais leve e performático, ideal com Nginx. Apache é tradicional, mas usa mais recursos. PHP-FPM é recomendado para projetos modernos Laravel.

Como executar comandos Artisan dentro do container Docker?

Use o comando docker exec para acessar o terminal do container e rodar comandos Artisan, garantindo que funcionem no ambiente configurado.

O que devo considerar ao usar Docker com Macs Apple Silicon?

Deve-se usar imagens Docker compatíveis com arquitetura ARM64 ou configurar emulação no Docker Desktop para garantir compatibilidade e evitar falhas.