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-project
per creare una nuova cartella chiamata “my-laravel-project”, quindi usare il comandocd my-laravel-project
per spostarti all’interno della cartella appena creata. - Crea un nuovo file chiamato
Dockerfile
all’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.yml
all’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 -d
per creare e avviare i container. - Esegui il comando
docker-compose exec app composer install
per installare le dipendenze di Laravel. - Esegui il comando
docker-compose exec app cp .env.example .env
per creare il file.env
del tuo progetto Laravel. - Esegui il comando
docker-compose exec app php artisan key:generate
per 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;
}
}