Dos formas de desplegar
Necesitas una aplicación Laravel, un repositorio Git y una cuenta de cdn.com.tr. Hay dos caminos y puedes elegir cualquiera. La plataforma PHP gestionada ejecuta tu aplicación Laravel en un runtime PHP 8 moderno con base de datos gestionada, Redis, SSL automático y un WAF — sin Dockerfile que escribir. El camino de contenedores te da control total: aportas un Dockerfile, y la plataforma lo construye y lo ejecuta como una aplicación en contenedor gestionada. Ambos están detrás de la CDN edge. Esta guía cubre el camino de contenedores en detalle y señala la plataforma gestionada donde es más sencillo.
Configuración y secretos
Nunca incrustes tu .env en la imagen ni confirmes secretos en Git. En su lugar, define tu configuración de Laravel como variables de entorno (y secretos) en la plataforma, así la misma imagen se ejecuta de forma segura en producción. Como mínimo, definirás la clave de la aplicación, el entorno, y las conexiones a tu base de datos y Redis gestionados.
Valores de entorno a definir en la plataforma
APP_ENV=production
APP_KEY=base64:... # php artisan key:generate --show
APP_DEBUG=false
APP_URL=https://app.example.com
DB_CONNECTION=mysql
DB_HOST=<managed-db-host>
DB_DATABASE=<db>
DB_USERNAME=<user>
DB_PASSWORD=<secret>
CACHE_STORE=redis
SESSION_DRIVER=redis
REDIS_HOST=<managed-redis-host>
Añade un Dockerfile
Confirma un Dockerfile en la raíz de tu repositorio. Este ejemplo instala las dependencias de Composer y sirve la aplicación en el puerto 8000. El servidor incorporado de Laravel mantiene el ejemplo sencillo; para tráfico alto, cambia la última línea a Laravel Octane (FrankenPHP o Swoole) o usa la plataforma PHP gestionada en su lugar.
Dockerfile
FROM php:8.2-cli
# Extensiones PHP que Laravel suele necesitar
RUN apt-get update && apt-get install -y libzip-dev \
&& docker-php-ext-install pdo_mysql zip opcache
# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app
COPY . .
RUN composer install --no-dev --optimize-autoloader --no-interaction
EXPOSE 8000
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]
Despliega desde Git
En el panel de cdn.com.tr, crea una aplicación en contenedor y conecta tu repositorio Git. La plataforma lee tu Dockerfile, construye la imagen y ejecuta el contenedor. A partir de ahí, desplegar es simplemente hacer push a tu rama — cada push construye una imagen nueva y la publica sin tiempo de inactividad.
Publica un cambio
git add .
git commit -m "Add invoices page"
git push origin main
# cdn.com.tr construye la imagen y la publica automáticamente
Base de datos gestionada, Redis y migraciones
Añade una base de datos y Redis gestionados con un comando de cdnctl cada uno — conectan los datos de conexión a tu aplicación como variables de entorno, así los valores del .env del paso 2 quedan definidos por ti. Redis le da a Laravel una caché rápida y un almacén de sesiones; la base de datos gestionada se respalda y es accesible desde la aplicación. Luego ejecuta tus migraciones contra ella como parte del despliegue para que el esquema se mantenga sincronizado.
cdnctl accounts use <account_uuid>
cdnctl container addons enable-database --app <app_uuid> --url-scheme mysql
cdnctl container addons enable-redis --app <app_uuid> --env-prefix REDIS
# ejecuta las migraciones contra la base de datos gestionada
php artisan migrate --force
Dominio, HTTPS y el edge
Apunta tu dominio a la aplicación y cdn.com.tr emite y renueva el SSL automáticamente. Tu aplicación Laravel ahora se ejecuta detrás de la CDN edge: los recursos estáticos se almacenan en caché y se sirven cerca de los visitantes, un WAF filtra el tráfico malicioso, y los picos se absorben en el edge. Si prefieres no gestionar un Dockerfile en absoluto, la plataforma PHP gestionada te da el mismo resultado — runtime PHP 8, base de datos y Redis gestionados, HTTPS automático y WAF— sin construir una imagen.
Buenos casos de uso
Ejecuta Laravel con una base de datos y Redis gestionados, HTTPS automático y un WAF, desplegado directamente desde Git.
Mueve una aplicación PHP antigua a PHP 8 en la plataforma gestionada, detrás de la CDN y el WAF, sin rediseñarla.
Sirve las rutas de la API de Laravel como un contenedor gestionado con healthchecks, secretos y enrutamiento edge por delante.
Preguntas frecuentes sobre el despliegue de Laravel
¿Necesito Docker, o puedo usar la plataforma gestionada?
Cualquiera de los dos. La plataforma PHP gestionada ejecuta Laravel sin un Dockerfile — obtienes un runtime PHP 8 con base de datos gestionada, Redis, HTTPS y un WAF. El camino de contenedores es para equipos que quieren control total sobre la imagen; ambos se ejecutan detrás del edge.
¿Dónde se ejecutan las colas y el scheduler?
Ejecuta el scheduler y los workers de colas de Laravel como tareas programadas o de larga duración junto a la aplicación, apuntando a la misma base de datos/Redis gestionados. Mantén los secretos en variables de entorno para que cada proceso comparta una sola configuración.
¿Cómo funcionan las migraciones de base de datos en el despliegue?
Ejecuta 'php artisan migrate --force' contra la base de datos gestionada como parte de tu despliegue. Como una compilación fallida mantiene la versión anterior sirviendo, avanzas de forma segura y tu esquema se mantiene sincronizado con el código.