14-Probar nuestra aplicación Laravel con Docker

 

 Probar nuestra aplicación Laravel con Docker

🎯 Objetivo

Verificar que nuestra aplicación Laravel funciona correctamente en Docker, incluyendo PHP, Nginx y la conexión a la base de datos MySQL.


📋 Prerrequisitos

  • Tener Docker y Docker Compose instalados

  • Tener un proyecto Laravel configurado con Docker

  • Archivos docker-compose.yml y .env configurados


🚀 Paso 1: Iniciar los contenedores

Primero, limpiamos la consola y verificamos el estado de nuestros contenedores:

bash
# Limpiar consola (Ctrl+L)
docker-compose up -d

Verificamos que los tres servicios estén corriendo:

bash
docker ps

Deberíamos ver algo similar:

text
CONTAINER ID   NOMBRE           ESTADO   PUERTOS
abc123         laravel-app      Up       ...      
def456         laravel-db-1     Up       3306/tcp
ghi789         laravel-nginx    Up       0.0.0.0:8000->80/tcp

✅ Nota: Como la imagen de PHP ya está creada, no es necesario reconstruirla.


🌐 Paso 2: Verificar la aplicación en el navegador

Observamos en docker ps que Nginx está mapeando el puerto 80 del contenedor al puerto 8000 del servidor.

  1. Abre tu navegador web

  2. Accede a la aplicación usando la IP de tu servidor:

    text
    http://192.168.1.208:8000

    (Ajusta la IP según tu configuración)

  3. Deberías ver la página principal de Laravel

✅ Resultado: Tenemos PHP 7.4, Nginx y Laravel 8 corriendo correctamente en Docker.


🗄️ Paso 3: Verificar la base de datos

Acceder al contenedor de MySQL:

bash
docker exec -it laravel-db-1 bash

Dentro del contenedor:

bash
mysql -u laravel -p

Contraseña: secret

Verificar la base de datos:

sql
SHOW DATABASES;

Deberías ver la base de datos laravel_db creada.

✅ Confirmación: La configuración del archivo .env funcionó correctamente.


🔄 Paso 4: Ejecutar migraciones de Laravel

Salimos del contenedor de la base de datos (exit) y ejecutamos las migraciones:

bash
docker exec laravel-app php artisan migrate

Deberías ver algo como:

text
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2019_08_19_000000_create_failed_jobs_table

✅ Paso 5: Verificar las tablas migradas

Volvemos a acceder a la base de datos:

bash
docker exec -it laravel-db-1 mysql -u root -p

Contraseña: secret

sql
USE laravel_db;
SHOW TABLES;

Deberías ver las 4 tablas creadas:

  • users

  • password_resets

  • failed_jobs

  • migrations

🎉 ¡Perfecto! Confirmamos que:

  1. La aplicación Laravel está funcionando

  2. Nginx sirve la aplicación correctamente

  3. La base de datos está conectada y operativa

  4. Las migraciones se ejecutaron exitosamente


💡 Consejos y Buenas Prácticas

📁 Crear un repositorio de plantilla

Para no repetir este proceso en cada proyecto nuevo:

  1. Crea un repositorio en GitHub con toda la configuración Docker

  2. Al iniciar un nuevo proyecto Laravel, clona este repositorio

  3. Modifica el archivo .env para cambiar:

    • Nombre de la base de datos

    • Credenciales de la base de datos

    • Configuraciones específicas del proyecto

🔧 Archivos clave a versionar:

  • docker-compose.yml

  • Dockerfile (si aplica)

  • Archivos de configuración de Nginx

  • Scripts de inicialización


🎬 Siguientes pasos recomendados

En el próximo tutorial aprenderemos a:

  • Configurar un dominio local para nuestra aplicación

  • Usar localhost en lugar de la dirección IP

  • Configurar virtual hosts en nuestro equipo local


📝 Resumen

Hemos verificado exitosamente que nuestra aplicación Laravel funciona completamente en Docker:

  • ✅ Servidor web (Nginx) corriendo en puerto 8000

  • ✅ PHP 7.4 con Laravel 8 funcionando

  • ✅ Base de datos MySQL configurada y conectada

  • ✅ Migraciones ejecutadas correctamente

  • ✅ Comunicación entre todos los servicios establecida

¡Tu entorno de desarrollo con Docker está listo para comenzar a programar! 

Comentarios

Entradas más populares de este blog

ejercicios-Crear Carpeta y Archivo de Texto en Ubuntu

Tutorial de Carpetas y Directorios en Ubuntu Linux

Instalar Docker en Ubuntu Server usando docker.io