* update docs to remove old references to frankenphp:static-builder (we have -musl and -gnu) * remove --platform and make gnu default * add --platform back in (let dunglas decide) * fix missed translations
6.7 KiB
Laravel
Docker
Servir uma aplicação web Laravel com FrankenPHP é tão
fácil quanto montar o projeto no diretório /app da imagem Docker oficial.
Execute este comando a partir do diretório principal da sua aplicação Laravel:
docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp
E divirta-se!
Instalação local
Alternativamente, você pode executar seus projetos Laravel com FrankenPHP a partir da sua máquina local:
-
Adicione a seguinte configuração a um arquivo chamado
Caddyfileno diretório raiz do seu projeto Laravel:{ frankenphp } # O nome de domínio do seu servidor localhost { # Define o diretório raiz como public/ root public/ # Habilita a compressão (opcional) encode zstd br gzip # Executa os arquivos PHP a partir do diretório public/ e serve os assets php_server { try_files {path} index.php } } -
Inicie o FrankenPHP a partir do diretório raiz do seu projeto Laravel:
frankenphp run.
Laravel Octane
O Octane pode ser instalado através do gerenciador de pacotes Composer:
composer require laravel/octane
Após instalar o Octane, você pode executar o comando octane:install do
Artisan, que instalará o arquivo de configuração do Octane em sua aplicação:
php artisan octane:install --server=frankenphp
O servidor Octane pode ser iniciado por meio do comando octane:frankenphp do
Artisan.
php artisan octane:frankenphp
O comando octane:frankenphp pode receber as seguintes opções:
--host: O endereço IP ao qual o servidor deve se vincular (padrão:127.0.0.1);--port: A porta na qual o servidor deve estar disponível (padrão:8000);--admin-port: A porta na qual o servidor de administração deve estar disponível (padrão:2019);--workers: O número de workers que devem estar disponíveis para processar requisições (padrão:auto);--max-requests: O número de requisições a serem processadas antes de recarregar o servidor (padrão:500);--caddyfile: O caminho para o arquivoCaddyfiledo FrankenPHP (padrão: stub doCaddyfileno Laravel Octane);--https: Habilita HTTPS, HTTP/2 e HTTP/3 e gera e renova certificados automaticamente;--http-redirect: Habilita o redirecionamento de HTTP para HTTPS (somente- habilitado se
--httpsfor passada); --watch: Recarrega o servidor automaticamente quando a aplicação é modificada;--poll: Usa o polling do sistema de arquivos durante a verificação para monitorar arquivos em uma rede;--log-level: Registra mensagens de log no nível de log especificado ou acima dele, usando o logger nativo do Caddy.
Tip
Para obter logs JSON estruturados (útil ao usar soluções de análise de logs), passe explicitamente a opção
--log-level.
Saiba mais sobre o Laravel Octane em sua documentação oficial.
Aplicações Laravel como binários independentes
Usando o recurso de incorporação de aplicações do FrankenPHP, é possível distribuir aplicações Laravel como binários independentes.
Siga estes passos para empacotar sua aplicação Laravel como um binário independente para Linux:
-
Crie um arquivo chamado
static-build.Dockerfileno repositório da sua aplicação:FROM --platform=linux/amd64 dunglas/frankenphp:static-builder-gnu # Se você pretende executar o binário em sistemas musl-libc, use o static-builder-musl # Copia sua aplicação WORKDIR /go/src/app/dist/app COPY . . # Remove os testes e outros arquivos desnecessários para economizar espaço # Como alternativa, adicione esses arquivos a um arquivo .dockerignore RUN rm -Rf tests/ # Copia o arquivo .env RUN cp .env.example .env # Altera APP_ENV e APP_DEBUG para que estejam prontas para produção RUN sed -i'' -e 's/^APP_ENV=.*/APP_ENV=production/' -e 's/^APP_DEBUG=.*/APP_DEBUG=false/' .env # Faça outras alterações no seu arquivo .env, se necessário # Instala as dependências RUN composer install --ignore-platform-reqs --no-dev -a # Compila o binário estático WORKDIR /go/src/app/ RUN EMBED=dist/app/ ./build-static.shCaution
Alguns arquivos
.dockerignoreignorarão o diretóriovendor/e os arquivos.env. Certifique-se de ajustar ou remover o arquivo.dockerignoreantes da compilação. -
Construa:
docker build -t static-laravel-app -f static-build.Dockerfile . -
Extraia o binário:
docker cp $(docker create --name static-laravel-app-tmp static-laravel-app):/go/src/app/dist/frankenphp-linux-x86_64 frankenphp ; docker rm static-laravel-app-tmp -
Popule os caches:
frankenphp php-cli artisan optimize -
Execute as migrações de banco de dados (se houver):
frankenphp php-cli artisan migrate -
Gere a chave secreta da aplicação:
frankenphp php-cli artisan key:generate -
Inicie o servidor:
frankenphp php-server
Agora sua aplicação está pronta!
Saiba mais sobre as opções disponíveis e como compilar binários para outros sistemas operacionais na documentação de incorporação de aplicações.
Alterando o caminho do armazenamento
Por padrão, o Laravel armazena arquivos enviados, caches, logs, etc., no
diretório storage/ da aplicação.
Isso não é adequado para aplicações embarcadas, pois cada nova versão será
extraída para um diretório temporário diferente.
Defina a variável de ambiente LARAVEL_STORAGE_PATH (por exemplo, no seu
arquivo .env) ou chame o método
Illuminate\Foundation\Application::useStoragePath() para usar um diretório
fora do diretório temporário.
Executando o Octane com binários independentes
É possível até empacotar aplicações Octane do Laravel como binários independentes!
Para fazer isso, instale o Octane corretamente e siga os passos descritos na seção anterior.
Em seguida, para iniciar o FrankenPHP no modo worker através do Octane, execute:
PATH="$PWD:$PATH" frankenphp php-cli artisan octane:frankenphp
Caution
Para que o comando funcione, o binário independente deve ser nomeado
frankenphpporque o Octane precisa de um programa chamadofrankenphpdisponível no caminho.