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
- Installa Docker sul tuo computer se non lo hai già fatto. Puoi seguire le istruzioni qui: https://docs.docker.com/get-docker/
- Crea una nuova cartella per il tuo progetto Laravel e spostati all’interno di essa. Ad esempio, puoi usare il comando
mkdir my-laravel-projectper creare una nuova cartella chiamata “my-laravel-project”, quindi usare il comandocd my-laravel-projectper spostarti all’interno della cartella appena creata. - Crea un nuovo file chiamato
Dockerfileall’interno della cartella del tuo progetto Laravel e incolla il seguente codice al suo interno:
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
- Crea un nuovo file chiamato
docker-compose.ymlall’interno della cartella del tuo progetto Laravel e incolla il seguente codice al suo interno:
services:
nginx:
image: nginx:1.17-alpine
container_name: travellist-nginx
restart: unless-stopped
ports:
– “8000:80”
volumes:
– ./:/var/www
– ./docker-compose/nginx:/etc/
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.
- Apri il terminale e spostati nella cartella del tuo progetto Laravel.
- Esegui il comando
docker-compose up -dper creare e avviare i container. - Esegui il comando
docker-compose exec app composer installper installare le dipendenze di Laravel. - Esegui il comando
docker-compose exec app cp .env.example .envper creare il file.envdel tuo progetto Laravel. - Esegui il comando
docker-compose exec app php artisan key:generateper generare la chiave di crittografia per il tuo progetto Laravel. - Ora dovresti essere in grado di accedere al tuo progetto Laravel all’indirizzo http://localhost:8000 nel tuo browser.
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_
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}