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!