DEV Community

Cover image for Imagem Docker. Para rodar projetos PHP em menos de 30 segundos.
Leonardo Lemos for Convenia

Posted on

Imagem Docker. Para rodar projetos PHP em menos de 30 segundos.

Release da imagem PHP Full da Convenia, com PHP 8.5

Nesta semana, lançamos a versão 8.5 da nossa imagem Docker para aplicações PHP, agora com PHP 8.5 e nesse post vamos falar um pouco de como utilizar essa imagem.

Na Convenia, a maior HR Tech do Brasil, utilizamos essa imagem de forma padronizada em todos os nossos projetos. Isso significa que qualquer desenvolvedor da equipe sabe exatamente como iniciar, testar e implantar aplicações sem surpresas no ambiente — seja em desenvolvimento, homologação ou produção. Nesse post abordamos todas as vantagens de padronizar a forma de executar aplicações

Essa imagem está disponível desde a versão 8.1, sendo amplamente testada e utilizada em produção em centenas de projetos e pipelines da Convenia e já acumula mais de 10K de pulls no Docker Hub.


O que é a imagem Docker PHP Full?

A imagem Docker PHP Full é um ambiente containerizado que já contém tudo o que aplicações PHP precisam para rodar com segurança e desempenho:

  • PHP pré-configurado com versões modernas
  • Servidor web integrado
  • Ferramentas úteis como Composer, cron e extensões comuns
  • Testes de integridade e atualizações regulares

A Convenia mantém esse padrão há diversas versões — do PHP 8.1 até o novo 8.5 — garantindo estabilidade e suporte contínuo para todos os projetos da empresa.


Como usar a imagem

Instalação

Para começar com a imagem PHP Full da Convenia, basta usar o Docker ou Docker Compose.

Usando Docker

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

Ao acessar o seu localhost será possível ver uma documentação similar a essa

Documentação da imagem sendo servida pela própria imagem em execução


Essa página é a própria documentação da imagem sendo servida pelo PHP + nginx. No proximo exemplo com o docker compose vemos como executar a nossa aplicação dentro da imagem, é só montar um volume ou copiar a aplicação para o diretório /var/www/app dentro do container.

Usando com Docker Compose

Crie um arquivo docker-compose.yml na raiz do seu projeto:

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

Depois, execute:

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

Esse arquivo pode ser colocado na raiz de um projeto Laravel por exemplo, e ao subir a stack do compose o projeto já deve executar sem maiores problemas.

Na verdade é possível colocar esse arquivo em qualquer aplicação PHP que tenha a pasta public como entrypoint do request, aplicações Symfony, Laravel. Se o entrypoint for na raiz apenas acrescente a pasta public ao montar o volume:

    volumes:
      - .:/var/www/app/public
Enter fullscreen mode Exit fullscreen mode

Atualizações automáticas

A imagem é construída e atualizada semanalmente para garantir o uso de versões seguras e livres de vulnerabilidades conhecidas, com escaneamento contínuo de dependências. O último build pode ser consultado no workflow do Github Actions


Segurança

  • O serviço FPM (porta 9000) é exposto apenas internamente no container
  • É recomendado bloquear a porta 9000 em ambientes externos
  • A imagem já vem com as configurações de segurança recomendadas para produção. Como desabilitar mensagens de erros e afins.

Exemplos de customização

Substituir configuração do Nginx

Você pode substituir a configuração padrão do servidor web:

services:
  app:
    image: convenia/php-full:8.5
    volumes:
      - ./nginx.conf:/etc/nginx/http.d/default.conf
Enter fullscreen mode Exit fullscreen mode

Assim adapta o container às regras específicas do seu projeto.


Tarefas agendadas com cron

A imagem já inclui o binário cron, facilitando tarefas agendadas:

  1. Adicione um arquivo crontab com os comandos desejados;
  2. Copie para o container:
COPY crontab /etc/crontabs/root
Enter fullscreen mode Exit fullscreen mode
  1. Inicie cron no container:
docker run --rm mycronimage crond -l 2 -f
Enter fullscreen mode Exit fullscreen mode

Isso facilita execução de comandos como o scheduler do Laravel.


Conclusão

Seguem uma listinha com as vantagens da utilização dessa imagem em projetos PHP:

  • Consistência entre ambientes
  • Facilidade de uso
  • Atualizações contínuas
  • Padrão único para toda a empresa

Top comments (0)