Si parla spesso di creazione ambiente Docker con Laravel, (lo abbiamo visto nel nostro corso Laravel ADVANCED nelle 3 ore dedicate al workshop), detto ciò, con questa mini guida pratica vediamo quelli che sono i passaggi più importanti per creare un ambiente Docker con Laravel

Vediamo insieme come Creare un ambiente Docker con Laravel

  1. Installa Docker sul tuo computer se non lo hai già fatto. Puoi seguire le istruzioni qui: https://docs.docker.com/get-docker/
  2. Crea una nuova cartella per il tuo progetto Laravel e spostati all’interno di essa. Ad esempio, puoi usare il comando mkdir my-laravel-project per creare una nuova cartella chiamata “my-laravel-project”, quindi usare il comando cd my-laravel-project per spostarti all’interno della cartella appena creata.
  3. Crea un nuovo file chiamato Dockerfile all’interno della cartella del tuo progetto Laravel e incolla il seguente codice al suo interno:
(Considera che usando PHP-FPM non hai una porta 80 per http, quindi bisogna aggiungere
nginx).

FROM php:8.1-fpm per il supporto di Laravel 10

RUN apt-get update && \
apt-get install -y \
libzip-dev \
zip \
unzip \
git

RUN docker-php-ext-install pdo_mysql zip

COPY . /var/www/html

RUN chown -R www-data:www-data /var/www/html/storage

WORKDIR /var/www/html

  1. Crea un nuovo file chiamato docker-compose.yml all’interno della cartella del tuo progetto Laravel e incolla il seguente codice al suo interno:
version: ‘3’
services:
nginx:
image: nginx:1.17-alpine
container_name: travellist-nginx
restart: unless-stopped
ports:
– “8000:80”
volumes:
– ./:/var/www
– ./docker-compose/nginx:/etc/nginx/conf.d
app:
build:
context: .
dockerfile: Dockerfile
volumes:
– .:/var/www/html
laraveldb:
image: mysql:5.7
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: root

networks:
laravel:

Questo file definisce due servizi: app e db. Il servizio app utilizza il Dockerfile che abbiamo creato in precedenza per costruire un’immagine Docker che contiene l’ambiente PHP necessario per eseguire Laravel. Esso mappa la porta 8000 del container sulla porta 8000 del computer host e monta la directory corrente del computer host nella directory /var/www/html del container. Il servizio db utilizza un’immagine Docker predefinita di MySQL e definisce alcune variabili d’ambiente per creare un nuovo database per il tuo progetto Laravel.

  1. Apri il terminale e spostati nella cartella del tuo progetto Laravel.
  2. Esegui il comando docker-compose up -d per creare e avviare i container.
  3. Esegui il comando docker-compose exec app composer install per installare le dipendenze di Laravel.
  4. Esegui il comando docker-compose exec app cp .env.example .env per creare il file .env del tuo progetto Laravel.
  5. Esegui il comando docker-compose exec app php artisan key:generate per generare la chiave di crittografia per il tuo progetto Laravel.
  6. Ora dovresti essere in grado di accedere al tuo progetto Laravel all’indirizzo http://localhost:8000 nel tuo browser.
È necessario aggiungere un container web-server per accettare request http
e inoltrarle poi al container php-fpm in cui vive l’applicazione Laravel.
Per far questo creiamo una cartella ./docker-compose/nginx all’interno del
progetto. All’interno di questa cartella creiamo un file chiamato
laravel.conf, con il seguente contenuto:

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/public;
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 / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}