Laravel è un framework PHP per applicazioni web che permette allo sviluppatore di semplificare alcune delle attività più comuni dei progetti web, come ad esempio autenticazione, autorizzazione, routing, sessioni e caching.
Essendo Laravel ampiamente diffuso, in questo articolo affrontiamo il problema della containerizzazione di un progetto Laravel. Vediamo quindi come creare un progetto Laravel in un container Docker.
Opzione 1: Usiamo la command line utility Docker
Per amministrare Docker non c’è cosa migliore che l’utility a riga di comando. Vediamo quindi come istanziare il nostro progetto Laravel in pochi comandi.
Creazione della Docker network
La prima cosa da fare è creare la Docker network che verrà usata dai container della nostra applicazione Laravel.
sudo docker network create laravel-network
Creazione del Docker volume per MariaDB
Ora è necessario creare un Docker volume per garantire la persistenza dei dati di MariaDB.
sudo docker volume create --name mariadb_data
Istanziare il container di MariaDB
Creiamo quindi il container Docker di MariaDB
sudo docker run -d --name mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MARIADB_USER=laravel \
--env MARIADB_DATABASE=app_db \
--network laravel-network \
--volume mariadb_data:/bitnami/mariadb \
bitnami/mariadb:latest
Avviare il container utilizzando la directory corrente come volume (bind mounting)
sudo docker run -d --name laravel-app \
-p 8000:8000 \
--env DB_HOST=mariadb \
--env DB_PORT=3306 \
--env DB_USERNAME=laravel \
--env DB_DATABASE=app_db \
--network laravel-network \
--volume ${PWD}/my-project:/app \
bitnami/laravel:latest
Opzione 2: Usiamo il docker-compose.yml
docker-compose.yml
per poi eseguirle lanciando l’utility docker compose. Il file Yaml è il seguente:
version: '3.8'
services:
app:
image: bitnami/laravel:latest
container_name: laravel-app
restart: unless-stopped
environment:
DB_HOST: mariadb
DB_PORT: 3306
DB_USERNAME: laravel
DB_DATABASE: app_db
volumes:
- ./my-project:/app
ports:
- "8000:8000"
networks:
- laravel-network
db:
image: bitnami/mariadb:latest
container_name: mariadb
restart: unless-stopped
environment:
ALLOW_EMPTY_PASSWORD: yes
MARIADB_USER: laravel
MARIADB_DATABASE: app_db
volumes:
- mariadb_data:/bitnami/mariadb
networks:
- laravel-network
volumes:
mariadb_data:
driver: local
networks:
laravel-network:
driver: bridge
Lanciamo quindi il seguente comando per istanziare i container della nostra applicazione Laravel:
sudo docker compose up -d
Considerazioni finali
bitnami/laravel
. Per approfondimenti, fare riferimento alla documentazione ufficiale dell’immagine https://hub.docker.com/r/bitnami/laravel/