- Programação

Configurando Ambiente de Desenvolvimento Docker para Projetos Laravel

Ao trabalhar com Laravel, é comum a necessidade de configurar o ambiente de desenvolvimento de forma eficiente e padronizada. Uma das melhores práticas nesse contexto é utilizar o Docker, que permite criar contêineres isolados para rodar o aplicativo e seus serviços de forma consistente em diferentes máquinas. Neste post, vamos detalhar como configurar ambiente de desenvolvimento Docker para projetos Laravel de maneira prática e otimizada.

Requisitos Prévios

Antes de iniciar a configuração do Docker para projetos Laravel, é necessário garantir que algumas ferramentas estejam instaladas:

  • Docker: Certifique-se de ter o Docker instalado em sua máquina.
  • Docker Compose: Ferramenta para gerenciar multi-contêineres Docker de forma simples.
  • Laravel: O framework PHP Laravel já deve estar instalado e configurado no seu projeto.

Criando o Dockerfile para Laravel

O primeiro passo para configurar ambiente de desenvolvimento Docker para projetos Laravel é criar o Dockerfile, que define a imagem do contêiner. Abaixo está um exemplo básico para um ambiente Laravel:

# Use official PHP image with necessary extensions
FROM php:8.1-fpm

# Instale as dependências do sistema
RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev zip git

# Habilite as extensões do PHP
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd pdo pdo_mysql

# Instale o Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Defina o diretório de trabalho
WORKDIR /var/www

# Copie os arquivos do projeto Laravel para o contêiner
COPY . .

# Instale as dependências do Laravel
RUN composer install

# Exponha a porta 9000 para o servidor PHP
EXPOSE 9000

CMD ["php-fpm"]

Criando o Docker Compose para Laravel

O Docker Compose facilita a configuração de múltiplos contêineres, como o PHP, MySQL, e outros serviços necessários para rodar o Laravel. Abaixo está um exemplo de docker-compose.yml para um projeto Laravel:

version: '3.8'

services:
  app:
    build:
      context: .
    container_name: laravel_app
    image: laravel_app:latest
    restart: unless-stopped
    ports:
      - "8000:9000"
    volumes:
      - .:/var/www
    networks:
      - laravel_network

  mysql:
    image: mysql:5.7
    container_name: mysql_db
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: laravel
      MYSQL_USER: user
      MYSQL_PASSWORD: userpassword
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - laravel_network

volumes:
  mysql_data:

networks:
  laravel_network:
    driver: bridge

Configurando o Laravel para o Docker

Agora que o Dockerfile e o Docker Compose estão configurados, é necessário ajustar o Laravel para usar o MySQL contido no contêiner. No arquivo .env do Laravel, altere as configurações do banco de dados para corresponder às configurações do contêiner MySQL:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=userpassword

Rodando os Contêineres

Com o Dockerfile e docker-compose.yml configurados, o próximo passo é iniciar os contêineres. Execute o comando abaixo no diretório do projeto:

docker-compose up --build

Esse comando irá construir as imagens, iniciar os contêineres e executar o Laravel. O contêiner PHP estará disponível na porta 8000 do seu navegador, acessível em http://localhost:8000.

Outros Ajustes e Considerações

  1. Artisan no Docker: Para rodar comandos Artisan dentro do contêiner, use o seguinte comando: docker-compose exec app php artisan migrate
  2. Configuração de Cache: Se você encontrar problemas relacionados ao cache, especialmente com permissões de arquivos, adicione as permissões apropriadas ao diretório storage e bootstrap/cache dentro do contêiner: docker-compose exec app chmod -R 777 storage bootstrap/cache
  3. Utilizando Docker para Produção: Embora a configuração aqui seja focada no desenvolvimento, a mesma abordagem pode ser utilizada para ambientes de produção com alguns ajustes, como otimização de desempenho e segurança.

Essa configuração do Docker para projetos Laravel ajuda a criar um ambiente de desenvolvimento mais robusto, isolado e consistente, eliminando o problema de “funciona na minha máquina” entre diferentes ambientes.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *