tutoriais
FrankenPHP parte 2 - Usando o Caddyfile
No post anterior, vimos como subir uma aplicação usando o FrankenPHP sem nenhuma configuração, de modo simples e rápido. Nesse artigo, vamos evoluir um pouco mais e começar a explorar configurações com o Caddyfile e habilitar a funcionalidade de métricas para o prometheus.
#Criando o Caddyfile
na pasta raiz do projeto Laravel vamos criar um arquivo Caddyfile com o seguinte conteúdo:
{
frankenphp
metrics
admin 0.0.0.0:2019
log {
output stdout
format console
}
}
localhost {
root * /app/public/
encode zstd br gzip
php_server {
try_files {path} index.php
}
}
Nessa configuração, estamos deixando querendo:
- Habilitar o módulo do frankenphp no caddy
- Habilitar as métricas, que podem ser consultadas acessando
localhost:2019/metrics - Permitir o acesso externo a métricas com a linha
admin 0.0.0.0:2019 - Configurar um log mais bonito
- Definir as configurações pro host
localhost, dizendo onde está o arquivo inicial do php, permitindo encode de zstd, br e gzip, e dizendo para usar o php_server passando as rotas pro index.php dopublic/
#Utilizando o Caddyfile
Agora temos uma outra mudança, vamos precisar trocar o comando frankenphp php-server por franken-php run. O comando php-server serve como um atalho para rodar o básico sem se preocupar com nenhuma configuração, mas como vamos começar a explorar as configurações disponíveis precisamos mudar para o comando run que lê um arquivo Caddyfile, que no caso vai estar no mesmo diretório em que o comando é executado na nossa imagem docker. No arquivo Dockerfile troque CMD ["frankenphp", "php-server", "-r", "public/"] por CMD ["frankenphp", "run"]. E também adicione as portas 443 pro https e a 2019 pro metrics no docker-compose.yaml.
#Testando tudo
Rode o comando docker compose up e acesse o localhost, deve aparecer algo com certificado suspeito no navegador, inclua na exceção. E para ver os dados de métricas, é só acessar localhost:2019/metrics e verá um texto com várias linhas sendo comentários e o padrão parâmetro e valor.
Deixei essas mudanças publicadas no repositório de exemplo na tag 1.0.1, pode ver clicando aqui.
Bons códigos e até a próxima!