Loading...

Aprende / Despliegue

Cómo desplegar una aplicación Laravel en cdn.com.tr

Lleva una aplicación Laravel a producción sin alquilar ni parchear un servidor. Dos caminos: un runtime PHP totalmente gestionado, o tu propio contenedor desplegado desde Git — ambos detrás de la CDN edge con una base de datos gestionada, HTTPS automático y un WAF.

9 min de lectura Intermedio Updated

Cómo desplegar una aplicación Laravel en cdn.com.tr

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.

Cómo desplegar una aplicación Laravel en cdn.com.tr — Dos formas de desplegar
Plataformas gestionadas y container apps en cdn.com.tr.

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 — añade una base de datos y Redis, luego migra
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

SaaS y aplicaciones web

Ejecuta Laravel con una base de datos y Redis gestionados, HTTPS automático y un WAF, desplegado directamente desde Git.

Modernización de PHP heredado

Mueve una aplicación PHP antigua a PHP 8 en la plataforma gestionada, detrás de la CDN y el WAF, sin rediseñarla.

APIs y backends

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.