- Tamanho da Imagem:
2.75MB
A imagem Docker wandersonwhcr/growth:latest
pode ser gerada através do comando
abaixo, responsável também por construir a imagem base para desenvolvimento.
make
O tamanho final da imagem pode ser verificado através do seguinte comando:
docker inspect \
--type image \
--format '{{ .Size }}' \
wandersonwhcr/growth:latest \
| numfmt --to iec --format '%.2f'
docker run --rm \
--detach \
--publish 8080:8080 \
wandersonwhcr/growth:latest
- Durante a criação da imagem, efetua-se o download do código-fonte do PHP, compilando-o com todos os recursos desabilitados.
- Adiciona-se o módulo externo
apcu
do PHP ao binário de forma estática para reduzir o tamanho; este módulo é responsável por trabalhar com tabelas de hash em memória. - O executável gerado é compactado através da ferramenta
upx
e sempre que o processo é inicializado, o binário é descompactado e depois executado. - Utiliza-se uma imagem scratch como base da imagem final; inclui-se um volume
/tmp
para upload de arquivos temporários. - O processamento do arquivo é síncrono: o PHP não possui execuções
assíncronas por causa do thread safe e possivelmente a extensão
pthreads
pode auxiliar neste requisito. - Pela simplicidade do desafio, não se utilizou frameworks e nem testes unitários. A API é disponibilizada utilizando o Web Server built-in que é recomendado somente para ambientes de desenvolvimento.
- Por fim, sinta-se à vontade para melhorar este projeto! O foco inicial foi a redução do tamanho da imagem e criação de uma API funcional.
make dev
make stage