Ambiente de desenvolvimento PHP com servidor web embutido.
2.0K
Projetei essa imagem de modo que ela seja leve, flexível e versátil no contexto de ambientes de desenvolvimento, ou seja, você NÃO DEVE em hipótese alguma utilizar essa imagem em ambientes produtivos ou pré-produção.
As palavras-chave "DEVE", "NÃO DEVE", "REQUER", "DEVERIA", "NÃO DEVERIA", "PODERIA", "NÃO PODERIA", "RECOMENDÁVEL", "PODE", e "OPCIONAL" presentes em qualquer parte deste repositório devem ser interpretadas como descritas no RFC 2119. Tradução livre RFC 2119 pt-br.
Caso deseje utilizar essa mesma abordagem mas com outra versão do PHP, consulte meu catalogo de Tags no Docker Hub.
Lista de módulos ativos presentes na imagem (saída do php -m):
pt_BR)/usr/local/etc/php/php.inidate.timezone)xdebug.mode=off) para não penalizar o desempenhoSugestão: utilize como exemplo o docker-compose.yml para simplificar o start de um ambiente.
O modo do Xdebug PODE ser definido na criação do container por meio da variável de ambiente XDEBUG_MODE, sem necessidade de alterar arquivos de configuração. Com o modo debug ativo, a sessão é iniciada automaticamente a cada requisição e se conecta à IDE em host.docker.internal:9003 (idekey DOCKER):
docker run \
--name nome_do_container \
-d \
-v $(pwd):/app \
-p 80:80 \
--user www-data \
-e XDEBUG_MODE=debug \
fabiojanio/php:8.5-cli-alpine3.24
Para gerar relatório de cobertura de testes (PHPUnit/Pest), utilize o modo coverage:
docker run \
--rm \
-v $(pwd):/app \
--user $(id -u) \
-e XDEBUG_MODE=coverage \
fabiojanio/php:8.5-cli-alpine3.24 vendor/bin/phpunit --coverage-text
Os modos PODEM ser combinados separando-os por vírgula, exemplo: XDEBUG_MODE=debug,coverage. No Linux, o host.docker.internal REQUER o parâmetro --add-host=host.docker.internal:host-gateway.
Execute essa instrução para montar um volume compartilhado entre host e container:
docker run \
--name nome_do_container \
-d \
-v $(pwd):/app \
-p 80:80 \
--user www-data \
fabiojanio/php:8.5-cli-alpine3.24
Obs: no exemplo acima optei por utilizar o $(pwd) para capturar o caminho absoluto. Note ainda que fiz uso --user para subir o container utilizando um usuário não ROOT, isso não é obrigatório, porém, é mais seguro.
Por padrão essa imagem considera o /app como seu document root. Vamos supor que você instalou o Laravel, este por sua vez considera o subdiretório /public como seu document root, neste caso PODEMOS contornar este problema de forma muito simples. Veja:
docker run \
--name nome_do_container \
-d \
-v $(pwd):/app \
-p 80:80 \
--user www-data \
fabiojanio/php:8.5-cli-alpine3.24 php -S 0.0.0.0:80 -t /app/public
Após a criação do container é possível se conectar a ele desta forma:
docker exec -it nome_do_container sh
Os exemplos abaixo representam algumas das possibilidades e facilidades providas por essa imagem.
Para baixar e instalar o Laravel Framework:
docker run \
--rm \
-v $(pwd):/app \
--user $(id -u) \
fabiojanio/php:8.5-cli-alpine3.24 composer create-project --prefer-dist laravel/laravel laravel_example
Para baixar e instalar o Yii Framework:
docker run \
--rm \
-v $(pwd):/app \
--user $(id -u) \
fabiojanio/php:8.5-cli-alpine3.24 composer create-project --prefer-dist yiisoft/yii2-app-basic yii_example
Para subir o Laravel Framework:
docker run \
--name nome_do_container \
-d \
-v $(pwd):/app \
-p 8080:80 \
--user www-data \
fabiojanio/php:8.5-cli-alpine3.24 php artisan serve --host=0.0.0.0 --port 80
Para subir o Yii Framework:
docker run \
--name nome_do_container \
-d \
-v $(pwd):/app \
-p 8080:80 \
--user www-data \
fabiojanio/php:8.5-cli-alpine3.24 php yii serve 0.0.0.0:80
Caso você tenha um index.php na raiz do seu projeto, basta executar:
docker run \
--name nome_do_container \
-d \
-v $(pwd):/app \
-p 8080:80 \
--user www-data \
fabiojanio/php:8.5-cli-alpine3.24
Caso seu Document Root for um subdiretório, exemplo /minha_app/public, você pode fazer assim:
docker run \
--name nome_do_container \
-d \
-v $(pwd):/app \
-p 8080:80 \
--user www-data \
fabiojanio/php:8.5-cli-alpine3.24 php -S 0.0.0.0:80 -t /app/public
Para maior agilidade e comodidade consulte o docker-compose.yml que deixei de exemplo para você. Observe que você pode sobrescrever a propriedade command de modo a executar N tarefas no start do container, bem como substituir ou adicionar definições para outros containers. Boa diversão :)
Para maiores informações, leia o arquivo de licença disponível neste repositório.
Content type
Image
Digest
sha256:8668c4d53…
Size
65.5 MB
Last updated
21 days ago
docker pull fabiojanio/php