8. Probando contenedores

 

8: Probando los Contenedores

Duración estimada: 20 minutos


8.1 Introducción

¡Ya tenemos todos nuestros contenedores en funcionamiento! En este tutorial vamos a probar cada uno de ellos para verificar que todo esté correctamente configurado y entender cómo interactuar con cada servicio.


8.2 Lista de Contenedores Activos

✅ Contenedores desplegados

ContenedorEstadoPuertoPropósito
Laravel App✅ Activo8001PHP-FPM 8.4
Laravel Nginx✅ Activo8080Servidor web
Laravel Postgres✅ Activo5432Base de datos
Laravel PgAdmin✅ Activo5050Gestor BD visual
Laravel LocalStack✅ Activo4566Emulador AWS
Laravel Vite✅ Activo5173Servidor frontend

8.3 Probando el Servidor Web (Nginx)

🌐 Acceso a la aplicación

  1. Abre tu navegador

  2. Ve a http://localhost:8080

  3. Verás uno de estos resultados:

🔴 Caso 1: "File not found"

text
❌ File not found

¿Por qué ocurre?

  • La carpeta laravel/ está vacía

  • Nginx no encuentra el archivo index.php

Solución: Configuraremos el proyecto Laravel en el siguiente tutorial.

🟡 Caso 2: Página con error de manifest.json

text
❌ Manifest.json not found

¿Por qué ocurre?

  • El proyecto Laravel está presente pero falta la compilación de assets

  • React/Vite no están configurados correctamente

Solución: Instalaremos dependencias de Node en breve.

🟢 Caso 3: ¡Éxito! 🎉

Si ves la página de Laravel o tu aplicación funcionando, ¡todo está perfecto!


8.4 Probando LocalStack (Emulador AWS)

🐳 Verificar que LocalStack esté funcionando

bash
# Verificar el estado del contenedor
docker ps | grep localstack

🔍 Probar el servicio S3

bash
# Instalar AWS CLI (si no lo tienes)
pip install awscli

# Configurar credenciales locales
aws configure --profile localstack
AWS Access Key ID: test
AWS Secret Access Key: test
Default region: us-east-1

# Listar buckets (debería mostrar una lista vacía)
aws --endpoint-url=http://localhost:4566 s3 ls

🌐 Acceso a la UI de LocalStack

text
http://localhost:4566
http://localhost:4566/_localstack/health

⚠️ Nota: La UI de LocalStack puede no ser muy estable. La mayoría de las operaciones las haremos desde la terminal.


8.5 Probando PostgreSQL

🐘 Conexión a la Base de Datos

Opción 1: Desde la terminal

bash
# Acceder a PostgreSQL dentro del contenedor
docker exec -it laravel_postgres psql -U laravel -d laravel

# Verificar conexión
\l  # Listar bases de datos
\dt # Listar tablas
\q  # Salir

Opción 2: Usando un cliente visual

Credenciales de conexión:

CampoValor
Hostlocalhost
Puerto5432
Base de datoslaravel
Usuariolaravel
Contraseñasecret

📊 Clientes recomendados:

ClientePlataformaPrecio
TablePlusWin/Mac/LinuxGratuito (limitado)
DBeaverWin/Mac/LinuxGratuito
pgAdminWebGratuito (ya lo tenemos)
DataGripWin/Mac/LinuxPago

8.6 Probando phpPgAdmin

🌐 Acceso a la interfaz web

  1. Abre http://localhost:5050

  2. Inicia sesión con:

CampoValor
Emailadmin@sample.com
Contraseñaadmin

📝 Configurar conexión a PostgreSQL

Pasos:

  1. Clic en "Agregar servidor"

  2. Nombre: Inertia (o el que prefieras)

  3. Ir a "Conexión"

CampoValor
Hostpostgres
Puerto5432
Base de datoslaravel
Usuariolaravel
Contraseñasecret
  1. Clic en "Guardar"

✅ ¡Verás la base de datos laravel con sus tablas!


8.7 Probando el Contenedor PHP (Laravel App)

🔍 Comandos para verificar

bash
# Verificar versión de PHP
docker exec -it laravel_app php -v

# Verificar extensiones instaladas
docker exec -it laravel_app php -m

# Verificar Composer
docker exec -it laravel_app composer -V

# Verificar estructura de carpetas
docker exec -it laravel_app ls -la /var/www/html

Resultado esperado:

text
PHP 8.4.12 (cli) (built: Jan 14 2025 09:13:08) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.4.12, Copyright (c) Zend Technologies

8.8 Probando el Contenedor Vite

🔧 Verificación inicial

bash
# Verificar que Node esté instalado
docker exec -it laravel_vite node -v

⚠️ Posible error

Si obtienes un error como:

text
Error: Cannot find module ...

Causa: La carpeta node_modules no está instalada.

Solución temporal: No te preocupes, esto se arreglará cuando instalemos las dependencias en el siguiente tutorial.

🔄 Flujo de trabajo con Vite

El contenedor Vite te permite:

  1. Hot Reload: Los cambios se reflejan automáticamente

  2. Compilación en tiempo real: JSX/TSX se compila al instante

  3. Puerto 5173: Servidor de desarrollo dedicado


8.9 Verificación de Volúmenes

📦 Volúmenes creados

bash
# Listar volúmenes
docker volume ls

# Ver detalle de un volumen
docker volume inspect pgdata
docker volume inspect localstack_data

📂 Ubicación de los volúmenes

VolumenContenidoUbicación en host
pgdataDatos PostgreSQL/var/lib/docker/volumes/pgdata
localstack_dataDatos LocalStack/var/lib/docker/volumes/localstack_data

8.10 Comandos de Diagnóstico Rápidos

🛠️ Comprobación general

bash
# Ver todos los contenedores activos
docker compose ps

# Ver estado de salud de todos
docker inspect $(docker ps -q) | grep -E "Status|IPAddress"

# Ver consumo de recursos
docker stats

# Ver logs combinados
docker compose logs --tail=50

🔍 Verificar comunicación entre contenedores

bash
# Desde el contenedor app, probar conexión a PostgreSQL
docker exec laravel_app ping postgres

# Desde el contenedor app, probar conexión a Nginx
docker exec laravel_app ping nginx

# Probar conexión a LocalStack
docker exec laravel_app ping localstack

8.11 Resumen de Puertos y Accesos

🌐 Tabla de acceso rápida

ServicioURLEstado esperado
Aplicaciónhttp://localhost:8080🟡 Pendiente de configurar
phpPgAdminhttp://localhost:5050🟢 Conectado
LocalStack Healthhttp://localhost:4566/_localstack/health🟢 JSON de servicios
LocalStack UIhttp://localhost:4566🟡 Inestable
Vitehttp://localhost:5173🟡 Pendiente de dependencias

8.12 Errores Comunes y Soluciones

❌ Error: "File not found" en Nginx

bash
# Solución: Verificar que existe la carpeta laravel/
ls -la laravel/

❌ Error: "Connection refused" en PostgreSQL

bash
# Solución: Verificar que Postgres esté corriendo
docker compose logs postgres

# Reiniciar si es necesario
docker compose restart postgres

❌ Error: No se puede acceder a phpPgAdmin

bash
# Verificar credenciales en docker-compose.yml
# Las credenciales deben coincidir con las de PostgreSQL

❌ Error: Node no encontrado en contenedor Vite

bash
# Este error se resuelve instalando node_modules
# Lo haremos en el siguiente tutorial

8.13 Próximos Pasos

🚀 Lo que viene

  1. Instalación de Laravel en el contenedor

  2. Configuración de variables de entorno

  3. Instalación de dependencias frontend

  4. Ejecución de la aplicación por primera vez


📝 Ejercicio de la Clase

Para practicar y verificar tu entorno:

  1. Accede a cada servicio desde tu navegador

  2. Conéctate a PostgreSQL desde un cliente visual

  3. Verifica las versiones de PHP y Node en los contenedores

  4. Prueba la comunicación entre contenedores

  5. Documenta cualquier error que encuentres


📚 Recursos Adicionales


¡Excelente! Has verificado que todos los contenedores funcionan. Continúa al Tutorial 9: Instalación y Configuración de Laravel. 

Comentarios