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
.dockerignore
ignorarão o diretóriovendor/
e os arquivos.env
. Certifique-se de ajustar ou remover o arquivo.dockerignore
antes 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
frankenphp
porque o Octane precisa de um programa chamadofrankenphp
disponível no caminho.