En este tutorial iniciaremos un proyecto de Laravel dentro de un contenedor de Docker. Esto nos permitirá programar en nuestro HOST sin necesidad de tener instalado PHP, un servidor y la base de datos.

Comenzamos definiendo el archivo docker-compose.yml que nos permitirá crear los contenedores.

Utilizaremos las imágenes de Laravel y MariaDB oficiles de bitnami.

Nuestro archivo docker-compose.yml debe verse así:

services:
  app:
    image: bitnami/laravel
    container_name: laravel
    environment:
      - DB_HOST=mariadb
      - DB_PORT=3306
      - DB_USERNAME=bn_myapp
      - DB_DATABASE=bitnami_myapp
    volumes:
      - ./my-project:/app
    ports:
      - 8000:8000
    networks:
      - laravel-network
    depends_on:
      - db

  db:
    image: bitnami/mariadb
    container_name: mariadb
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_USER=bn_myapp
      - MARIADB_DATABASE=bitnami_myapp
    volumes:
      - db-data:/bitnami/mariadb
    ports:
      - "3306:3306"
    networks:
      - laravel-network

networks:
  laravel-network:

volumes:
  db-data:

Esto:

  1. Creará los contenedores.
  2. Asignará puertos, la red “laravel-network”.
  3. Montará el volumen a la base de datos para su persistencia.
  4. Montará un volumen en la carpeta my-project de nuestro ordenador (HOST) para que podamos realizar los cambios en local y que sean reflejados en el contenedor.

Podemos ver las variables de entorno disponibles para cada imagen en Docker Hub.

En nuestra terminal ejecutamos:

docker compose up -d

Y tendremos nuestros contenedores corriendo. Accediendo a localhost:8000 (escogí este puerto, pero puede ser otro), veremos el proyecto de Laravel.

Imagen de proyecto de Laravel en contenedor de Docker

En nuestro HOST, en la carpeta my-project (o el nombre que le hayamos puesto), veremos los archivos del proyecto. Esto se debe a que montamos el volumen.

¿Quieres utilizar Laravel como API?

La imagen de Laravel que utilizamos no está configurada para utilizarla como API REST; si queremos hacer uso de ella, debemos habilitarla.

Para ello ejecutamos el comando:

docker exec nombre_contenedor php artisan install:api

Esto nos creará el archivo api y realizará las configuraciones necesarias para comenzar a trabajar con ella.

Estructura de carpetas de un proyecto de LaravelEstructura de carpetas de un proyecto de Laravel

Recomiendo verificar el usuario/grupo y los permisos del archivo api.php y ajustarlos según corresponda, ya que de esto depende que podamos editarlo.

Sólo queda crear las rutas y comenzar a programar nuestra API REST.