DEV Community

Cover image for PHP FULL IMAGE NEWS
Leonardo Lemos for Convenia

Posted on

PHP FULL IMAGE NEWS

Imagem PHP Full da Convenia agora roda em ARM e ganhou uma versão de desenvolvimento

No último post falamos da imagem PHP Full, que usamos em todos os projetos PHP aqui da Convenia. De lá pra cá ela ganhou duas novidades que mereciam um post próprio: suporte a ARM em todas as versões e uma tag nova, a 8.5-dev, pensada para o ambiente de desenvolvimento e para pipelines de teste.


Suporte a ARM

Até agora a imagem só era publicada para amd64. Quem usa Mac com Apple Silicon rodava tudo emulado, o que deixa o container bem mais lento, e em produção não dava pra aproveitar instâncias ARM como as Graviton da AWS.

Agora todas as tags (8.1, 8.2, 8.3, 8.4, 8.5 e latest) são publicadas para linux/amd64 e linux/arm64. Não precisa mudar nada no seu compose, o Docker baixa sozinho a versão da arquitetura da sua máquina:

docker run --rm -p 80:80 convenia/php-full:8.5
Enter fullscreen mode Exit fullscreen mode

O mesmo comando funciona num notebook Intel, num Mac M3 ou num servidor ARM.

Pra isso o build saiu do autobuild do Docker Hub e foi para o GitHub Actions. Os testes continuam rodando antes de qualquer publicação e o rebuild semanal continua lá, todo sábado, pra pegar as atualizações de segurança da imagem base.


A imagem de desenvolvimento

A imagem de produção é enxuta de propósito. Só que no dia a dia a gente sempre acabava instalando as mesmas coisas por cima dela: extensão de cobertura, Node pra gerar documentação ou buildar o front, um editor pra mexer em alguma coisa rápida dentro do container...

A partir do PHP 8.5 o Dockerfile tem dois targets. O de produção continua sendo publicado como convenia/php-full:8.5 e o de desenvolvimento sai como convenia/php-full:8.5-dev. A versão dev é a própria imagem de produção com alguns extras:

  • extensão pcov para cobertura de código
  • Infection para testes de mutação
  • Redocly CLI para documentação de API
  • nvm com o Node LTS como padrão, junto com npm e yarn
  • bash, vim e sudo (o usuário app tem sudo sem senha)

Como a base é a mesma, o que funciona no seu ambiente local funciona igual em produção. Nada de extensão numa versão diferente entre uma imagem e outra.

No dia a dia

No docker-compose.yml basta trocar a tag:

services:
  app:
    image: convenia/php-full:8.5-dev
    volumes:
      - .:/var/www/app
    ports:
      - "80:80"
Enter fullscreen mode Exit fullscreen mode

E pra entrar no container:

docker compose exec app bash
Enter fullscreen mode Exit fullscreen mode

Faltou algum pacote? Um sudo apk add resolve.

No CI

É na pipeline que a imagem dev ajuda mais. Com pcov e Infection instalados, dá pra rodar os testes com cobertura e os testes de mutação sem instalar nada antes:

docker run --rm -v $(pwd):/var/www/app convenia/php-full:8.5-dev \
  sh -c "composer install && vendor/bin/phpunit --coverage-text && infection"
Enter fullscreen mode Exit fullscreen mode

Se o projeto precisa de outra versão do Node, é só rodar um nvm install 20 num step com shell: bash. A versão escolhida fica como padrão para os próximos comandos, inclusive os que rodam em sh.


Conclusão

Resumindo as novidades:

  • Todas as versões, da 8.1 à 8.5, rodam nativamente em amd64 e arm64
  • Nova tag 8.5-dev com as ferramentas de desenvolvimento e teste
  • Build e testes automatizados no GitHub Actions, com rebuild semanal

Por enquanto a versão dev existe só para o PHP 8.5. Sugestões e PRs são bem-vindos no repositório da imagem.

Top comments (0)