5.2 Entorno de desarrollo para Laravel
5.2.1 Introducción
En este apartado vamos a preparar un entorno profesional de desarrollo pensado para trabajar con Laravel utilizando Docker y Visual Studio Code. El objetivo es que todos los alumnos puedan replicar este entorno en su propio ordenador para asegurar una base común antes de comenzar con la programación de aplicaciones.
Vamos a montar:
- Contenedores Docker para PHP 8.2-FPM y Nginx.
- Composer para gestionar dependencias.
- Xdebug para realizar depuración paso a paso desde Visual Studio Code.
- Un proyecto base estructurado.
5.2.2 Requisitos previos
Antes de comenzar asegúrate de tener instalado en tu sistema:
- Docker Desktop
- Visual Studio Code
- Extensión de VSCode: PHP Debug Adapter (autor: Xdebug, verificado)
5.2.3 Estructura del proyecto base
El proyecto inicial tendrá la siguiente estructura de carpetas:
/ (raíz del proyecto)
├── docker-compose.yml
├── README.md
├── php/
│ └── Dockerfile
│ └── conf.d/
│ └── 99-xdebug.ini
├── nginx/
│ └── default.conf
├── mysql/
│ └── data/
│ └── data.md
│ └── tmp/
│ └── tmp.md
├── src/
│ └── index.php
├── .vscode/
└── launch.json
Descripción de cada componente
| Carpeta/Fichero | Descripción |
|---|---|
docker-compose.yml |
Define los servicios Docker: PHP y Nginx. |
php/Dockerfile |
Imagen personalizada de PHP 8.2 con Composer y Xdebug. |
php/conf.d/99-xdebug.ini |
Configuración de Xdebug para depuración. |
nginx/default.conf |
Configuración de Nginx para servir la aplicación. |
mysql/data |
Carpeta donde almacenaremos las bases de datos |
mysql/tmp |
Carpeta temporal para MySQL. |
src/ |
Carpeta donde instalaremos Laravel. |
.vscode/launch.json |
Configuración de depuración en Visual Studio Code. |
Descargar el proyecto inicial desde GitHub
Para facilitar el trabajo y asegurar que todos los alumnos partimos del mismo entorno, hemos preparado un repositorio en GitHub con la estructura inicial ya configurada.
El repositorio público está disponible en:
https://github.com/jbeteta-ies/laravelinit.git
Clonar el repositorio
Para descargar el proyecto en tu ordenador debes seguir estos pasos:
- Abre una terminal o consola de comandos.
- Sitúate en la carpeta donde quieras clonar el proyecto.
- Ejecuta el siguiente comando:
git clone https://github.com/jbeteta-ies/laravelinit.git
Esto descargará todo el repositorio en tu ordenador.
¿Qué rama se descarga al clonar?
Cuando clonas el repositorio, Git descarga todo el historial de commits y todas las ramas existentes.
Sin embargo, te deja situado en la rama main por defecto.
Para poder trabajar en el estado inicial preparado para el curso, será necesario cambiarse a la rama correcta.
Cambiar a la rama inicial de trabajo
Después de clonar el repositorio, cambia a la rama entorno-inicial ejecutando:
cd laravelinit
git checkout entorno-inicial
Con esto, estarás trabajando en la versión del proyecto lista para comenzar con Laravel.
Estructura que encontrarás
Una vez hayas cambiado a la rama entorno-inicial, encontrarás la siguiente estructura de carpetas y archivos:
/ (raíz del proyecto)
├── docker-compose.yml
├── README.md
├── php/
│ ├── Dockerfile
│ └── conf.d/
│ └── 99-xdebug.ini
├── nginx/
│ └── default.conf
├── mysql/
│ ├── data/
│ │ └── data.md
│ └── tmp/
│ └── tmp.md
├── src/
│ └── index.php
├── .vscode/
│ └── launch.json
Estructura inicial
Es importante que tu estructura contenga todos estos archivos y carpetas para que el entorno funcione correctamente. Si falta alguna carpeta como mysql/data o mysql/tmp, el entorno no se levantará correctamente. Debes crearlas manualmente si no existen.
Si se han creado correctamente, debes eliminar los archivos data.md y tmp.md de las carpetas mysql/data y mysql/tmp, respectivamente. Estos archivos son solo marcadores para indicar que esas carpetas deben existir, pero no deben contener nada al iniciar el entorno.
Nota importante
Importante
Recuerda siempre cambiarte a la rama correcta (git checkout nombre-rama) antes de empezar a trabajar en cada tema del curso.
Si en algún momento necesitas actualizar tu repositorio local con nuevas ramas que se creen durante el curso, puedes usar:
git fetch origin
Y luego cambiarte a la nueva rama deseada con:
git checkout nombre-de-la-rama
5.2.4 Configuración de Docker
Dockerfile para PHP.
Vamos a crear un archivo Dockerfile para configurar un contenedor de PHP 8.4 con las extensiones necesarias para Laravel, Composer y Xdebug. Este archivo se ubicará en la carpeta php/ del proyecto.
Este archivo crea una imagen de PHP personalizada:
Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | |
docker-compose.yml
Archivo para definir y levantar los servicios:
docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
Configuración de Xdebug
Archivo php/conf.d/99-xdebug.ini:
1 2 3 4 5 6 | |
Configuración de Nginx
Archivo nginx/default.conf:
nginx/default.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Importante
Nota: Posteriormente, cuando instalemos Laravel, se modificará el root para apuntar a /var/www/html/public.
5.2.5 Configuración de Visual Studio Code
A continuación, configuraremos Visual Studio Code para que funcione con Xdebug. Crea la carpeta .vscode en la raíz del proyecto para añadir el archivo de configuración. Es importante que la carpeta comience con un punto (.) para que sea oculta.
Archivo .vscode/launch.json:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
5.2.6 Levantar el entorno
Carpeta ./mysql/data
Esta carpeta debe estar vacía antes de levantar el entorno por primera vez. Si contiene el archivo data.md, significa que aún no se ha inicializado la base de datos de MySQL. Elimina ese archivo antes de continuar.
La carpeta ./mysql/data es donde se almacenarán las bases de datos de MySQL. Asegúrate de que existe y tiene los permisos adecuados para que MySQL pueda escribir en ella.
Desde la terminal, en la carpeta del proyecto, la primera vez que levantes el entorno, ejecuta:
docker-compose up -d --build
docker-compose up -d
Accede a http://localhost:8080 y deberías ver el phpinfo() funcionando.
Para detener el entorno, puedes usar:
docker-compose down
5.2.7 Probar la instalación
Verificar el Debug
- Coloca un breakpoint en
src/index.php. - Inicia la depuración en VSCode (
F5). - Accede de nuevo a
http://localhost:8080. - VSCode debería detenerse en el breakpoint.
Problemas frecuentes
- Error de conexión a Xdebug: Asegurarse que el puerto 9003 está libre.
- No se detiene en breakpoints: Verificar
pathMappingsenlaunch.json. - Problemas en la instalación de extensiones PHP: Limpiar contenedores e imagenes (
docker system prune).
5.2.8 Otras extensiones recomendadas para Visual Studio Code
| Extensión | Descripción |
|---|---|
| Laravel Blade Snippets | Snippets para Laravel Blade. |
| PHP Intelephense | Autocompletado y análisis de código para PHP. |
| Laravel intellisense | Autocompletado para Laravel. |
| Laravel Docs | Acceso rápido a la documentación de Laravel. |
| Laravel Blade Formatter | Formateador de Blade. |
| PHP Debug | Depuración de PHP. (PHP Debug Adapter) |