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:
- Creará los contenedores.
- Asignará puertos, la red “laravel-network”.
- Montará el volumen a la base de datos para su persistencia.
- 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.
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.
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.