Múltiples Webs Laravel con solo una Base de Datos

Cómo Gestionar Múltiples Sitios Web en Laravel con una Sola Base de Datos usando Laravel Sail

Crear múltiples sitios Laravel que compartan una misma base de datos puede parecer una tarea compleja. Pero con Laravel Sail y un poco de organización, puedes tener varios proyectos funcionando al mismo tiempo, usando una única base de datos. Esto es ideal si estás creando una aplicación con panel de administración y frontend separados, o si desarrollas soluciones multisitio desde cero.

Únete a nuestra comunidad de Discord

Ventajas de Usar Laravel Sail para el Desarrollo Web Local

Laravel Sail es un entorno de desarrollo basado en Docker creado por el equipo oficial de Laravel. Te permite levantar todo lo necesario para trabajar con Laravel en segundos.

Qué es Laravel Sail y cómo se configura

Laravel Sail es una capa sobre Docker Compose que gestiona servicios como MySQL, Redis, Mailhog, etc. Para usarlo:

  1. Instala Laravel: curl -s https://laravel.build/miproyecto | bash

  2. Entra en el proyecto: cd miproyecto

  3. Levanta Sail: ./vendor/bin/sail up (si no tienes Laravel Sail tendrás que instalarlo con composer require laravel/sail)

Con eso ya tienes un entorno completo y listo para programar.

Beneficios del entorno local con Docker en Laravel

  • - Todo se ejecuta de forma aislada (sin ensuciar tu sistema)

  • - Replicable: todo el equipo trabaja igual

  • - Rápido de levantar y destruir

Laravel local Sail vs entornos tradicionales

Característica Sail + Docker Entorno tradicional
Aislado
Replicable
Listo en minutos
Requiere configuración Baja Alta

Conclusión: si quieres velocidad y eficiencia, Sail es el camino.


Múltiples Sitios Laravel con una Sola Base de Datos: ¿Es Posible?

Sí, es totalmente posible. Puedes tener varias aplicaciones Laravel accediendo a la misma base de datos sin problemas.

Laravel misma base de datos para diferentes sitios

Tanto si tus sitios son "frontend" y "admin" separados como proyectos independientes que acceden a los mismos datos, puedes compartir la base de datos configurando el .env de ambos con los mismos valores:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password

Laravel multitenancy sin paquetes complicados

Si bien existen paquetes complejos como Tenancy for Laravel, en muchos casos puedes usar una arquitectura simple:

  • - Mismo esquema para todos los sitios

  • - Middleware para identificar desde qué dominio se accede

  • - Reutilización de modelos y migraciones

Ideal para MVPs o paneles separados sin entrar en multitenancy avanzado.

Compartir base de datos Laravel de forma segura

Al compartir la base de datos:

  • - Usa migraciones en un solo proyecto

  • - Evita colisiones de datos sensibles

  • - Limita accesos usando roles o subdominios

Ejemplo: admin.local accede al panel, mientras que clientes.local es solo frontend.


Configurar Múltiples Proyectos Laravel en Docker con Laravel Sail

Aquí está el corazón del artículo. Vamos a ver cómo levantar dos proyectos Laravel que comparten base de datos usando Docker Compose.

Docker Compose para múltiples dominios Laravel

Tendrás dos proyectos, cada uno con su docker-compose.yml, pero solo uno con la base de datos:

App principal (admin):

services:
    laravel.test:
      ports:
        - '80:80'
      networks:
        - sail
      depends_on:
        - mysql
    mysql:
      image: 'mysql/mysql-server:8.0'
      volumes:
        - 'smartsalon-mysql:/var/lib/mysql'
  networks:
    sail:
      driver: bridge
      name: bbdd_mi_bbdd_multiweb
  

App secundaria (clientes, solo contiene la web):

services:
    laravel.test:
      ports:
        - '81:80'
      networks:
        - sail
        - shared
  networks:
    sail:
      driver: bridge
    shared:
      external:
        name: bbdd_mi_bbdd_multiweb
  

IMPORTANTE: He obviado el resto de configuración de los docker-compose.yaml puesto que no varían, lo único que varía es la parte de networks, mucho ojo a esto

Red compartida entre contenedores y acceso a la base de datos

Ambas apps deben usar la misma red Docker para que se "vean". Por eso usamos shared con el nombre bbdd_mi_bbdd_multiweb, definido en la app principal.

Punto clave: la app secundaria no necesita su propio contenedor MySQL. Ya tiene acceso al de la otra app.

Hostear múltiples sitios Laravel en paralelo

  • - Puedes abrir ambos proyectos en puertos diferentes (80 y 81)

  • - En tu /etc/hosts:

127.0.0.1 admin.local
127.0.0.1 clientes.local
  • - Usar Laravel Valet para proxy es otra opción si trabajas en macOS


Casos de Uso Reales y Buenas Prácticas

Te mostramos ejemplos prácticos para entender mejor cuándo esta arquitectura es útil.

Una base de datos múltiples webs para admin y frontend

Caso típico: tienes una app de reservas y necesitas:

  • - admin.tuapp.com para la gestión

  • - cliente.tuapp.com para los usuarios

Ambos usan la misma base de datos pero tienen vistas, rutas y controladores separados.

Separación de lógica sin complicar el mantenimiento

En lugar de complicar tu app con muchos roles o rutas condicionales, puedes mantener el código de cada sitio por separado.

Beneficios:

  • - Más limpio para trabajar en equipo

  • - Puedes desplegar partes por separado

  • - Testing aislado

Seguridad, escalabilidad y rendimiento en proyectos multisitio

Recomendaciones:

  • - Protege con CORS y tokens de acceso

  • - Usa Redis para cachear consultas comunes

  • - Considera separar bases de datos si el proyecto escala


Conclusión

Montar múltiples sitios Laravel con una sola base de datos usando Laravel Sail es una solución práctica, escalable y fácil de mantener. Usando Docker y redes compartidas, puedes levantar entornos locales completos y separados sin duplicar recursos.

Esta guía te permite empezar con una arquitectura simple y profesional, ideal para MVPs, SaaS o apps con paneles separados. Y lo mejor: sin necesidad de paquetes externos ni configuraciones complejas.

¡Esperamos que esta guía te ayude a sacar todo el potencial de Laravel en tu flujo de trabajo diario!

Preguntas Frecuentes

No. Laravel Sail abstrae todo por ti. Solo necesitas usar ./vendor/bin/sail up y seguir la documentación.

Sí, aunque se recomienda separar los servicios (por ejemplo, bases de datos por cliente) cuando la app crece.

Si usas buenos controles de acceso y roles bien definidos, puedes mantener todo seguro.

Nosotros utilizamos cookies

Este sitio utiliza cookies para mejorar su experiencia de usuario.

Puedes aceptar todas las cookies pulsando en el botón de "Aceptar todas", rechazar todas las cookies pulsando el botón de "Rechazar cookies" o configurar manualmente usando el botón de "más opciones"

Para más información visita nuestra Política de cookies

Personaliza las Cookies

Estas cookies son necesarias para que el sitio web funcione y no se pueden desactivar en nuestros sistemas. Usualmente están configuradas para responder a acciones hechas por tí para recibir servicios, tales como ajustar tus preferencias de privacidad, iniciar sesión en el sitio, o llenar formularios. Puedes configurar tu navegador para bloquear o alertar la presencia de estas cookies, pero algunas partes del sitio web no funcionarán. Estas cookies no guardan ninguna información personal identificable.

Estas cookies nos permiten contar las visitas y fuentes de circulación para poder medir y mejorar el desempeño de nuestro sitio. Nos ayudan a saber qué páginas son las más o menos populares, y ver cuántas personas visitan el sitio. Toda la información que recogen estas cookies es agregada y, por lo tanto, anónima.