Introducción
El desarrollo de aplicaciones Laravel requiere un entorno de desarrollo estable y consistente. Docker, una popular plataforma de contenedores, ofrece una forma eficiente de crear dicho entorno. En este completo tutorial, exploraremos cómo crear un entorno de desarrollo Laravel robusto utilizando Docker, una tecnología líder en contenedores. La guía incluye pasos para integrar MySQL y configurar Nginx, lo que garantiza un proceso de desarrollo perfecto.
Requisitos previos
- Conocimientos básicos de Laravel, Docker y MySQL.
- Docker y Docker Compose instalados en su computadora.
Paso 1: Configurando tu proyecto Laravel
Primero, cree un nuevo proyecto Laravel o vaya al directorio del proyecto existente. Si está creando un nuevo proyecto, utilice Composer:
composer create-project --prefer-dist laravel/laravel my-laravel-app
cd my-laravel-app
Paso 2: crear el Dockerfile
Desarrolle un Dockerfile en la raíz de su proyecto Laravel. Este archivo utiliza la imagen PHP 8.2 e instala las extensiones PHP necesarias junto con Composer. Describe el entorno de tu aplicación Laravel.
FROM php:8.2-fpm
# Install dependencies
RUN apt-get update && apt-get install -y \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
Paso 3: configurar Docker Compose
Cree un archivo "docker-compose.yml" en la raíz de su proyecto. Este archivo organiza sus contenedores Docker y define servicios para Laravel (aplicación), MySQL (db) y Nginx (web). Establece una red para estos servicios y un volumen para MySQL.
version: '3'
services:
app:
build:
context:.
dockerfile: Dockerfile
image: my-laravel-app
container_name: my-laravel-app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: my-laravel-app
SERVICE_TAGS: dev
working_dir: /var/www/html
volumes:
-./:/var/www/html
networks:
- app-network
db:
image: mysql:8
container_name: my-laravel-mysql
restart: unless-stopped
tty: true
ports:
- "13306:3306"
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
SERVICE_TAGS: dev
volumes:
- dbdata:/var/lib/mysql
networks:
- app-network
# Nginx Service
web:
image: 'nginx:alpine'
ports:
- "8000:80"
volumes:
-./:/var/www/html
-./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
dbdata:
driver: local
Este archivo define dos servicios: app para su aplicación Laravel y db para MySQL. También configura una red y un volumen para la persistencia de datos MySQL.
Paso 4: implementar la configuración de Nginx
Coloque un archivo nginx.conf en la raíz de su proyecto para configurar el servidor Nginx, que es esencial para servir su aplicación.
server {
listen 80;
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;
location /{
try_files $uri $uri//index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
}
Paso 5: ejecutar contenedores
Con la configuración de Dockerfile y docker-compose.yml, puede iniciar sus contenedores.
docker-compose up -d
Paso 5: Configurando tu base de datos Laravel
Edite el archivo .env
en su proyecto Laravel para usar el servicio MySQL:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=password
Paso 6: migrar bases de datos
Ejecute migraciones de Laravel para configurar su base de datos:
docker-compose exec app php artisan migrate
Paso 6: inicie sesión en la aplicación
Una vez que los contenedores estén en funcionamiento. Puede acceder a la aplicación Laravel en http://localhost:8000.
Conclusión
Ha creado con éxito un entorno de desarrollo Laravel basado en Docker con integración MySQL y configuración de Nginx. Esta configuración mejora la coherencia entre escenarios de desarrollo y facilita la colaboración en equipo. Para perfeccionar aún más su entorno, profundice en las funciones adicionales de Docker y las funciones avanzadas de Laravel.