Configurar entorno local Laravel Docker
Imagen de Konstantin en Pixabay

En este tutorial aprenderás cómo configurar un entorno de desarrollo local con Laravel y Docker, al hacer ésto puedes trabajar con proyectos que cuenten con distintas versiones de PHP, Laravel o dependencias sin crear conflictos con los recursos de tu sistema operativo. Al final del tutorial encontrás el repositorio del proyecto. Sin más manos a la obra.

Requisitos previos:

  1.  Contar con Docker instalado y corriendo en el sistema operativo.
  2.  Entorno de desarrollo como XAMPP, WAMPServer o Laragon.
  3.  Composer instalado globalmente (Debe estar apuntando a la versión de PHP que necesita tu proyecto).
  4.  Saber los requerimientos del servidor para la versión de Laravel que se necesita correr en el contenedor de Docker.
  5.  Editor de código como VS Code.

1. Crear estructura del proyecto

Abre tu editor de código en la raíz de tu entorno de desarrollo y crea una carpeta con el nombre que le darás a tu proyecto, en mi caso se llamará «laravel-docker-pruebas«:

crea la carpeta del proyecto

Dentro de la carpeta del proyecto crea las carpetas «mysql«, «nginx» y «src«:

crea las carpetas de los servicios

En el mismo nivel de las 3 carpetas anteriores, crea el archivo «docker-compose.yml«, en este archivo se configuran los servicios que correrán en el contenedor:

Igual que en el archivo anterior, en el mismo nivel crea el archivo «Dockerfile»:

Dentro de la carpeta «nginx» crea el archivo «default.conf«:

Crea el archivo de configuracion de nginx

2. Configurar archivo docker-compose.yml

Abre el archivo «docker-compose.yml«, en este archivo se configura los servicios que se usarán, la imagen, los puertos, volumes, red, etc., agrega la siguiente configuración:

version: '3.7'
#se definen los contenedores
services:
  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    restart: always
    ports:
      - 8888:80
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - mysql
    networks:
      - laravel

  mysql:
    image: mysql:5.7
    container_name: mysql
    restart: always
    environment:
      MYSQL_DATABASE: laravel-prueba
      MYSQL_USER: laravel
      MYSQL_PASSWORD: 123456
      MYSQL_ROOT_PASSWORD: 123456
    ports:
      - 3306:3306
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - laravel

  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: php
    volumes:
      - ./src:/var/www/html
    ports:
      - 9000:80
    networks:
      - laravel

networks:
  laravel:

Como puedes ver para este proyecto solo se usará tres servicios: nginx, mysql y php, si tu proyecto requiere de más servicios como Mongo aquí es donde debes agregarlo.

3. Configurar archivo default.conf

Abre el archivo «nginx/default.conf«, en este archivo se hacen las configuraciones para que el servidor Nginx funcione correctamente, agrega las siguientes instrucciones:

server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    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 php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

4. Configurar el archivo Dockerfile

Cuando Docker quiera construir la imagen de PHP irá a consultar el archivo Dockerfile ya que cuando configuraste los servicios en el archivo «docker-compose.yml» fue la instrucción que diste. En este archivo puedes configurar la versión de PHP que necesitas, en mi caso para este tutorial necesito instalar la versión 7.3 de PHP. Agrega las siguientes instrucciones:

FROM php:7.4-fpm-alpine

RUN docker-php-ext-install pdo pdo_mysql

5. Crear o clonar proyecto Laravel

Desde la terminal de comandos ingresa a la carpeta «src«, en esta carpeta se instalará o clonará el proyecto Laravel, dependiendo de esto es el comando que se utilizará.

Si quieres crear un proyecto nuevo en Laravel con la versión más reciente:

composer create-project laravel/laravel .

Para clonar un proyecto en Laravel:

 git clone https://github.com/diarioprogramador/laravel-pdf.git .

Para crear un proyecto con una versión específica de Laravel que para este proyecto usaré la versión 7 de Laravel:

composer create-project laravel/laravel . "7.*"

Iniciará la instalación del nuevo proyecto en Laravel:

Configurar entorno local Laravel Docker

6. Inicializar Docker y los servicios

Para Arrancar Docker y los servicios que configuraste desde la terminal de comandos colocate en la raíz de tu proyecto y escribe el comando:

docker-compose up -d

Iniciará la descarga de las imágenes:

Iniciará la descarga de las imágenes

Si todo va bien ya podrás ver la página de inicio de Laravel en tu navegador, ve a http://localhost:8888/:

Configurar entorno local Laravel Docker

Si quieres detener el contenedor desde la terminal de comandos escribe:

docker-compose down

7. Configurar archivo .env de Laravel

Desde el editor de textos abre el archivo «src/.env» y configura la conexión a la base de datos con la información que pusiste en el archivo «docker-compose.yml»:

Configurar entorno local Laravel Docker

Para correr las migraciones dentro del contenedor o usar cualquier comando de artisan se debe de seguir la nomenclatura, recuerda tener corriendo el contenedor:

docker-compose exec php php /var/www/html/artisan migrate

Las migraciones empezarán a correr, lo que indica que la conexión a la base de datos desde la red de Dockers se ha realizado correctamente:

Configurar entorno local Laravel Docker

8. Cómo usar los comandos de Docker en el proyecto

Para encender Docker y los servicios estando en la carpeta de tu proyecto desde la terminal de comandos escribe:

docker-compose up -d

Si tienes algún servicio que no esta funcionando y necesitas ver los log escribe en la terminal:

docker-compose logs -f

Para ver la lista de los contenedores:

docker-compose ps

Detener Docker y los servicios:

docker-compose down

Crear un Modelo, migración y controlador en Laravel:

docker-compose exec php php /var/www/html/artisan make:model Product -mcr

Conclusión

En este tutorial aprendiste cómo configurar un entorno local con Laravel y Docker paso a paso, lo que facilitará trabajar con diferentes versiones de PHP y dependencias de Laravel. Si este tutorial fue de ayuda, te invito a compartirlo en tus redes sociales para llegar a más personas y si tienes dudas o comentario déjalos en la caja de comentarios, estaré al pendiente de ellos. Te mando un saludo!

Repositorio GitHub del proyecto

Te puede interesar: Proyecto Laravel 9 y Docker en W10

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.