Este entorno permite desarrollar mΓΊltiples proyectos Laravel con diferentes versiones de PHP y Node.js, utilizando servicios compartidos como Nginx, MySQL, phpMyAdmin y Mailpit.
laravel-docker-dev/
βββ docker-compose.yml
βββ nginx/
β βββ default.conf
βββ php/
β βββ php74/
β β βββ Dockerfile
β βββ php82/
β βββ Dockerfile
βββ node/
β βββ node16/
β β βββ Dockerfile
β βββ node18/
β βββ Dockerfile
βββ projects/
βββ proyecto1/ (PHP 7.4 + Node 16)
βββ proyecto2/ (PHP 8.2 + Node 18)| Servicio | Puerto | DescripciΓ³n |
|---|---|---|
| Nginx | 80 | Servidor HTTP para los proyectos |
| MySQL | 3306 | Base de datos |
| phpMyAdmin | 8080 | Cliente web para MySQL |
| Mailpit | 8025 | Captura de correos SMTP |
| Laravel App | http://proyecto1.local, http://proyecto2.local | |
| Node.js | 2 contenedores con diferentes versiones |
- Docker y Docker Compose instalados
- Acceso sudo para editar
/etc/hosts
git clone <REPO_URL> laravel-docker-dev
cd laravel-docker-devColoca tus proyectos en las siguientes carpetas:
projects/proyecto1/
projects/proyecto2/El cΓ³digo debe tener el archivo public/index.php como punto de entrada.
Edita /etc/hosts y agrega:
127.0.0.1 proyecto1.local
127.0.0.1 proyecto2.localEdita /etc/hosts y agrega:
MAIL_MAILER=smtp
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=test@example.com
MAIL_FROM_NAME="${APP_NAME}"Coloca tus proyectos en las siguientes carpetas:
docker-compose up -d --build- Proyecto 1 (PHP 7.4): http://proyecto1.local
- Proyecto 2 (PHP 8.2): http://proyecto2.local
- phpMyAdmin: http://localhost:8080
- Mailpit: http://localhost:8025
Para usar Node dentro de los contenedores:
# Proyecto 1 (Node 16)
docker exec -it node_proyecto1 bash
cd proyecto1
npm install
npm run dev
# Proyecto 2 (Node 18)
docker exec -it node_proyecto2 bash
cd proyecto2
npm install
npm run dev- Puedes modificar los Dockerfiles para agregar mΓ‘s extensiones, herramientas o comandos ΓΊtiles.
- Usa
docker-compose logs -fpara ver los logs en tiempo real. - Crea mΓΊltiples proyectos fΓ‘cilmente duplicando servicios en el
docker-compose.yml.