Pular para o conteúdo

Guia de deploy · PHP / Laravel

Implante PHP / Laravel em minutos.

Conecte o repositório, o Railpack faz o build e o serviço recebe um domínio com TLS. Bancos de dados a partir de templates, uso descontado por minuto de um saldo pré-pago, tudo em nós na UE.

terminal
$ npm i -g skiffly && skiffly login
$ cd my-laravel-app && skiffly init
$ skiffly deploy --template postgres
$ skiffly variables set 'DB_URL=${{Postgres.DATABASE_URL}}' APP_ENV=production
$ skiffly up

O que o Railpack detecta

O Railpack inspeciona o repositório e escolhe o build para PHP / Laravel; a maioria dos projetos não precisa de configuração. Um Dockerfile no repositório sempre tem prioridade.

  • composer.json with laravel/framework
  • artisan
  • public/index.php
Builder
Railpack (padrão)
Comando de inicialização
php artisan migrate --force && php artisan serve --host=0.0.0.0 --port=$PORT

Derivado pelo Railpack; substitua em Configurações → Deploy → Comando de inicialização.

Porta e $PORT

A Skiffly injeta PORT em todos os serviços e roteia o domínio público para ela. Defina a porta nas configurações do serviço quando seu app escutar em uma porta fixa; o padrão é 8080 para PHP / Laravel, 8080 quando nada é definido.

Escutar em $PORT
php artisan serve --host=0.0.0.0 --port=$PORT
PORT
8080
SKIFFLY_PUBLIC_DOMAIN
<service>.skiffly.cloud

A partir de um terminal

Instale a CLI, vincule o diretório, implante. skiffly up faz o build do HEAD enviado da branch atual e transmite os logs do build; skiffly domain dá ao serviço um endereço *.skiffly.cloud.

Ou descreva uma vez só

.skiffly/skiffly.ts declara o serviço, seus bancos de dados e as referências entre eles. skiffly config plan mostra o diff, skiffly config apply aplica. A API espelha railway/iac.

Config as code
.skiffly/skiffly.ts
// .skiffly/skiffly.ts
import { defineSkiffly, generate, github, postgres, project, redis, service } from "@skiffly/config";

export default defineSkiffly(() => {
  const db = postgres("db");
  const cache = redis("cache");

  const web = service("web", {
    source: github("acme/web"),
    start: "php artisan migrate --force && php artisan serve --host=0.0.0.0 --port=$PORT",
    port: 8080,
    healthcheck: "/",
    env: {
      DATABASE_URL: db.env.DATABASE_URL,
      REDIS_URL: cache.env.REDIS_URL,
      APP_ENV: "production",
      APP_KEY: generate("hex32"),
    },
  });

  return project("web", { resources: [web, db, cache] });
});

PHP / Laravel na Skiffly: perguntas frequentes

Como defino variáveis de ambiente para PHP / Laravel?
Na aba Variáveis do serviço, com skiffly variables set KEY=value ou em .skiffly/skiffly.ts. Referencie outros serviços com ${{Postgres.DATABASE_URL}} e valores de todo o ambiente com ${{shared.NAME}}. Os segredos são criptografados em repouso.
Posso alterar o comando de build ou de inicialização?
Sim. Configurações → Build → Comando de build substitui a etapa de build do Railpack; Configurações → Deploy → Comando de inicialização substitui o comando de inicialização. Um monorepo define um diretório raiz para que o build rode dentro dele.
Como adiciono Postgres ou Redis?
Implante o template no mesmo ambiente. Ele chega com um volume, credenciais geradas e uma URL de conexão que você referencia a partir do serviço PHP / Laravel. Conecte-se do seu laptop com skiffly connect postgres.
Tenho ambientes de pré-visualização por pull request?
Ative as pré-visualizações de PR no projeto: cada pull request ganha sua própria cópia do ambiente em um domínio próprio, removida quando o PR é mesclado ou fechado. Forks são ignorados.
Quanto custa um app PHP / Laravel pequeno?
Um serviço de 512 MB / 0.25 vCPU custa cerca de $7.75 por mês, descontados por minuto do seu saldo. Adicione Postgres com 512 MB / 0.25 vCPU e um volume de 10 GB por cerca de $9 a mais. O plano Free roda um serviço de 512 MB com App Sleeping sem custo.
O serviço PHP / Laravel pode entrar em repouso quando ocioso?
Ative o App Sleeping: após cerca de 10 minutos sem requisições, ele escala para zero e acorda na próxima (2–10 s). CPU e memória não são cobradas durante o repouso; o volume é.

Implante seu app PHP / Laravel hoje

Plano Free sem cartão. Hobby a partir de $5 com $5 de uso incluídos.