Skip to content

docker-sources/php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php:8.2-alpine3.18

logo-docker
Travis-CI
Build Status

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.

🔗 Imagens disponíveis

Caso deseje utilizar essa mesma abordagem mas com outra versão do PHP, consulte meu catalogo de Tags no Docker Hub.

✅ Componentes principais

  • PHP 8.2.*
  • Composer 2.*
  • curl
  • unzip

✅ Módulos PHP ativos

Lista de módulos ativos presentes na imagem:

  • bcmath
  • Core
  • ctype
  • curl
  • date
  • dom
  • fileinfo
  • filter
  • ftp
  • gd
  • hash
  • iconv
  • intl
  • json
  • libxml
  • mbstring
  • mysqlnd
  • openssl
  • pcre
  • PDO
  • pdo_mysql
  • pdo_pgsql
  • pdo_sqlite
  • Phar
  • posix
  • readline
  • Reflection
  • session
  • SimpleXML
  • sodium
  • SPL
  • sqlite3
  • standard
  • tokenizer
  • xml
  • xmlreader
  • xmlwriter
  • zlib

❗ Pontos de atenção

  • Porta 80 exposta
  • php.ini de desenvolvimento alocado em /usr/local/etc/php/php.ini

Sugestão: utilize como exemplo o docker-compose.yml para simplificar o start de um ambiente. Este contêiner utiliza "America/Sao_Paulo" como timezone default.

💻 Iniciar container

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.2-alpine3.18

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.2-alpine3.18 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

💡 Outros exemplos de uso

Os exemplos abaixo representam algumas das possibilidades e facilidades providas por essa imagem.

☁️ Baixando e instalando Projetos

Para baixar e instalar o Laravel Framework:

docker run \
	--rm \
	-v $(pwd):/app \
  --user $(id -u) \
	fabiojanio/php:8.2-alpine3.18 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.2-alpine3.18 composer create-project --prefer-dist yiisoft/yii2-app-basic yii_example

▶️ Executar projeto/código PHP

Para subir o Laravel Framework:

docker run \
	--name nome_do_container \
	-d \
	-v $(pwd):/app \
	-p 8080:80 \
	--user www-data \
	fabiojanio/php:8.2-alpine3.18 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.2-alpine3.18 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.2-alpine3.18

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.2-alpine3.18 php -S 0.0.0.0:80 -t /app/public

🎉 Dica

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 :)

📃 Licença MIT

Para maiores informações, leia o arquivo de licença disponível neste repositório.

Releases

No releases published

Packages

No packages published