Esta página foi traduzida pela comunidade e pode não estar atualizada. Consulte a versão de referência.
Esta página foi traduzida pela comunidade e pode não estar atualizada. Consulte a versão de referência.
Esta página foi traduzida pela comunidade e pode não estar atualizada. Consulte a versão de referência.
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!
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 Caddyfile no
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.
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 arquivo Caddyfile do FrankenPHP (padrão:
stub do Caddyfile no 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--https for 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.
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.Dockerfile no repositório da sua
aplicação:
FROM --platform=linux/amd64 dunglas/frankenphp:static-builder
# 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.sh
Caution
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.
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.
É 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
Editar esta páginaCaution
Para que o comando funcione, o binário independente deve ser nomeado
frankenphpporque o Octane precisa de um programa chamadofrankenphpdisponível no caminho.