Cómo configurar Laravel con Dockerfile y Docker-Compose

1 feb 2024 3 min di lettura
Cómo configurar Laravel con Dockerfile y Docker-Compose
Indice dei contenuti

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.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.