rafapaulino / docker-php
Um ambiente Docker personalizável para PHP, MySQL/PostgreSQL, Redis e Mailpit, similar ao Laravel Sail.
Requires
- symfony/console: ^6.0
- symfony/filesystem: ^6.0
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-phppara gerenciar seu ambiente Docker facilmente. - Instalação via Composer: Integre o ambiente Docker ao seu projeto PHP com um simples comando Composer.
Instalação
-
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)
-
Adicione o pacote
rafapaulino/docker-phpao seu projeto:composer require rafapaulino/docker-php --dev
-
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,mailpitsão instalados se nenhum--withfor especificado.Este comando criará:
- Um diretório
docker/com os Dockerfiles para as versões PHP suportadas. - Um arquivo
docker-compose.ymlna raiz do seu projeto. - Um script
bin/docker-phpna raiz do seu projeto (certifique-se de quebin/esteja no seu.gitignore).
- Um diretório
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.ymlem 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 composediretamente:./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_PORTeFORWARD_MAILPIT_DASHBOARD_PORT.
Adicionando Novas Versões PHP
Para adicionar suporte a uma nova versão do PHP:
- Crie um novo Dockerfile em
stubs/php{version}.Dockerfile.stubdentro do pacotemanus/docker-php(ou diretamente emdocker/php-fpm-{version}/Dockerfileno seu projeto após a publicação). - Atualize o comando
InstallCommand.phppara 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.