Guía de despliegue · PHP / Laravel
Despliega PHP / Laravel en minutos.
Conecta el repositorio, Railpack lo compila, el servicio recibe un dominio con TLS. Bases de datos desde plantillas, uso descontado por minuto de un saldo prepago, todo en nodos en la UE.
$ 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 upQué detecta Railpack
Railpack inspecciona el repositorio y elige el build para PHP / Laravel; la mayoría de proyectos no necesita configuración. Un Dockerfile en el repositorio siempre gana.
- composer.json with
laravel/framework - artisan
- public/index.php
- Builder
- Railpack (por defecto)
- Comando de inicio
- php artisan migrate --force && php artisan serve --host=0.0.0.0 --port=$PORT
Lo deriva Railpack; cámbialo en Configuración → Deploy → Comando de inicio.
Puerto y $PORT
Skiffly inyecta PORT en cada servicio y enruta el dominio público hacia él. Define el puerto en la configuración del servicio si tu app escucha en uno fijo; el valor por defecto es 8080 para PHP / Laravel, 8080 si no defines ninguno.
php artisan serve --host=0.0.0.0 --port=$PORT- PORT
- 8080
- SKIFFLY_PUBLIC_DOMAIN
- <service>.skiffly.cloud
Desde una terminal
Instala la CLI, vincula el directorio, despliega. skiffly up compila el HEAD ya pusheado de la rama actual y transmite los logs del build; skiffly domain le da al servicio una dirección *.skiffly.cloud.
O descríbelo una sola vez
.skiffly/skiffly.ts declara el servicio, sus bases de datos y las referencias entre ellos. skiffly config plan muestra el diff, skiffly config apply lo aplica. La API replica a railway/iac.
// .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] });
});Funciona con las plantillas que necesitas
Despliega una base de datos junto al servicio PHP / Laravel y referencia sus variables: ${{Postgres.DATABASE_URL}} queda conectada por la red privada, sin puerto público.
PHP / Laravel en Skiffly: preguntas frecuentes
¿Cómo defino variables de entorno para PHP / Laravel?
skiffly variables set KEY=value o en .skiffly/skiffly.ts. Referencia otros servicios con ${{Postgres.DATABASE_URL}} y valores de todo el entorno con ${{shared.NAME}}. Los secretos se cifran en reposo.¿Puedo cambiar el comando de build o de inicio?
¿Cómo agrego Postgres o Redis?
skiffly connect postgres.¿Tengo entornos de vista previa por pull request?
¿Cuánto cuesta una app PHP / Laravel pequeña?
¿Puede el servicio PHP / Laravel dormir cuando está inactivo?
Despliega tu app PHP / Laravel hoy
Plan gratuito sin tarjeta. Hobby desde $5 con $5 de uso incluidos.