rafapaulino/docker-php

Um ambiente Docker personalizável para PHP, MySQL/PostgreSQL, Redis e Mailpit, similar ao Laravel Sail.

Maintainers

Package info

github.com/rafapaulino/Docker-PHP

pkg:composer/rafapaulino/docker-php

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

0.0.1 2026-03-17 20:51 UTC

This package is auto-updated.

Last update: 2026-03-17 20:54:35 UTC


README

Um ambiente Docker personalizável para desenvolvimento PHP, inspirado no Laravel Sail. Este pacote permite que você configure rapidamente um ambiente de desenvolvimento local com diferentes versões de PHP, bancos de dados (MySQL/PostgreSQL), Redis e Mailpit.

Funcionalidades

  • Seleção de Versão PHP: Suporte para múltiplas versões de PHP (atualmente 7.3, 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5). Pré-configurado com as principais extensões de otimização exigidas pelo Laravel e WordPress (pdo, mbstring, intl, opcache, mysqli, e outras).
  • Servidor Web: Pré-configurado com Nginx como proxy reverso roteando requisições HTTP para contêineres rodando PHP-FPM, aumentando a segurança e robustez do ambiente.
  • Bancos de Dados: Escolha entre MySQL e PostgreSQL.
  • Cache/Fila: Integração com Redis.
  • Email Local: Servidor de e-mail local com interface web (Mailpit).
  • CLI Simples: Um script bin/docker-php para gerenciar seu ambiente Docker facilmente.
  • Instalação via Composer: Integre o ambiente Docker ao seu projeto PHP com um simples comando Composer.

Instalação

  1. Crie seu projeto PHP (se ainda não tiver um):

    composer create-project laravel/laravel my-app
    cd my-app

    (Ou use qualquer outro projeto PHP)

  2. Adicione o pacote rafapaulino/docker-php ao seu projeto:

    composer require rafapaulino/docker-php --dev
  3. Publique os arquivos Docker:

    Após a instalação via Composer, execute o comando para publicar os arquivos Docker no seu projeto. Você pode especificar os serviços que deseja incluir:

    ./vendor/bin/docker-php-install --with=nginx,mysql,redis,mailpit

    Serviços disponíveis: nginx, mysql, pgsql, redis, mailpit. Por padrão, nginx,mysql,redis,mailpit são instalados se nenhum --with for especificado.

    Este comando criará:

    • Um diretório docker/ com os Dockerfiles para as versões PHP suportadas.
    • Um arquivo docker-compose.yml na raiz do seu projeto.
    • Um script bin/docker-php na raiz do seu projeto (certifique-se de que bin/ esteja no seu .gitignore).

Uso

O script bin/docker-php atua como um wrapper para o docker compose e permite interagir com seu ambiente Docker. Certifique-se de que o Docker esteja em execução antes de usar.

Comandos Comuns

  • Iniciar o ambiente: Inicia todos os serviços definidos no docker-compose.yml em segundo plano.

    ./bin/docker-php up
  • Parar o ambiente: Para todos os serviços.

    ./bin/docker-php stop
  • Desligar e remover o ambiente: Para e remove todos os contêineres, redes e volumes (exceto volumes de dados persistentes).

    ./bin/docker-php down
  • Executar um comando no contêiner PHP: Abre um shell bash no contêiner app.

    ./bin/docker-php shell
  • Executar Composer: Executa comandos Composer dentro do contêiner app.

    ./bin/docker-php composer install
    ./bin/docker-php composer update
  • Executar Artisan (para Laravel): Executa comandos Artisan dentro do contêiner app.

    ./bin/docker-php artisan migrate
    ./bin/docker-php artisan test
  • Executar PHPUnit: Executa testes PHPUnit dentro do contêiner app.

    ./bin/docker-php test
  • Outros comandos Docker Compose: Você pode passar qualquer comando docker compose diretamente:

    ./bin/docker-php ps
    ./bin/docker-php logs -f

Configuração

Versão do PHP

Você pode definir a versão do PHP usando a variável de ambiente PHP_VERSION no seu arquivo .env (ou diretamente no docker-compose.yml). Por exemplo:

PHP_VERSION=8.2

Os Dockerfiles para as versões suportadas estão localizados em docker/php-fpm-{version}/Dockerfile.

Serviços

Os serviços são configurados no docker-compose.yml. Você pode adicionar ou remover serviços editando este arquivo ou executando o comando docker-php:install novamente com diferentes opções --with.

  • MySQL/PostgreSQL: As credenciais do banco de dados podem ser configuradas via variáveis de ambiente no seu .env (ex: DB_DATABASE, DB_USERNAME, DB_PASSWORD, FORWARD_DB_PORT).
  • Redis: A porta do Redis pode ser configurada via FORWARD_REDIS_PORT.
  • Mailpit: As portas do Mailpit podem ser configuradas via FORWARD_MAILPIT_PORT e FORWARD_MAILPIT_DASHBOARD_PORT.

Adicionando Novas Versões PHP

Para adicionar suporte a uma nova versão do PHP:

  1. Crie um novo Dockerfile em stubs/php{version}.Dockerfile.stub dentro do pacote manus/docker-php (ou diretamente em docker/php-fpm-{version}/Dockerfile no seu projeto após a publicação).
  2. Atualize o comando InstallCommand.php para incluir a nova versão na lista $phpVersions.

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues ou pull requests no repositório do projeto.

Licença

Este projeto é licenciado sob a Licença MIT. Veja o arquivo LICENSE.md para mais detalhes.