Introduzione
Lo sviluppo di applicazioni Laravel richiede un ambiente di sviluppo stabile e coerente. Docker, una popolare piattaforma di containerizzazione, offre un modo efficiente per creare un tale ambiente. In questo tutorial completo, esploreremo come creare un solido ambiente di sviluppo Laravel utilizzando Docker, una tecnologia leader di containerizzazione. La guida include passaggi per l'integrazione di MySQL e la configurazione di Nginx, garantendo un processo di sviluppo senza interruzioni.
Prerequisiti
- Conoscenza base di Laravel, Docker e MySQL.
- Docker e Docker Compose installati sul tuo computer.
Passaggio 1: impostazione del progetto Laravel
Innanzitutto, crea un nuovo progetto Laravel o vai alla directory del progetto esistente. Se stai creando un nuovo progetto, utilizza Composer:
composer create-project --prefer-dist laravel/laravel my-laravel-app
cd my-laravel-app
Passaggio 2: creazione del Dockerfile
Sviluppa un Dockerfile alla radice del tuo progetto Laravel. Questo file utilizza l'immagine PHP 8.2 e installa le estensioni PHP necessarie insieme a Composer. Delinea l'ambiente della tua applicazione Laravel.
FROM php:8.2-fpm
# Install dependencies
RUN apt-get update && apt-get install -y \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip
# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd
# Get latest Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]
Passaggio 3: configurazione di Docker Compose
Crea un file "docker-compose.yml" nella root del tuo progetto. Questo file orchestra i tuoi contenitori Docker, definendo i servizi per Laravel (app), MySQL (db) e Nginx (web). Stabilisce una rete per questi servizi e un volume per MySQL.
version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile
image: my-laravel-app
container_name: my-laravel-app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: my-laravel-app
SERVICE_TAGS: dev
working_dir: /var/www/html
volumes:
- ./:/var/www/html
networks:
- app-network
db:
image: mysql:8
container_name: my-laravel-mysql
restart: unless-stopped
tty: true
ports:
- "13306:3306"
environment:
MYSQL_DATABASE: laravel
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
SERVICE_TAGS: dev
volumes:
- dbdata:/var/lib/mysql
networks:
- app-network
# Nginx Service
web:
image: 'nginx:alpine'
ports:
- "8000:80"
volumes:
- ./:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- app
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
dbdata:
driver: local
Questo file definisce due servizi: app per la tua applicazione Laravel e db per MySQL. Configura inoltre una rete e un volume per la persistenza dei dati MySQL.
Passaggio 4: implementazione della configurazione Nginx
Inserisci un file nginx.conf nella root del tuo progetto per configurare il server Nginx, essenziale per servire la tua applicazione.
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/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
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 ~ /\.ht {
deny all;
}
}
Passaggio 5: esecuzione dei contenitori
Con la configurazione di Dockerfile e docker-compose.yml , puoi avviare i tuoi contenitori.
docker-compose up -d
Passaggio 5: configurazione del database Laravel
Modifica il file .env
nel tuo progetto Laravel per utilizzare il servizio MySQL:
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=user
DB_PASSWORD=password
Passaggio 6: migrazione dei database
Esegui le migrazioni Laravel per configurare il tuo database:
docker-compose exec app php artisan migrate
Passaggio 6: accedere all'applicazione
Una volta che i contenitori sono attivi e funzionanti. È possibile accedere all'applicazione Laravel su http://localhost:8000.
Conclusione
Hai creato con successo un ambiente di sviluppo Laravel basato su Docker con integrazione MySQL e configurazione Nginx. Questa configurazione migliora la coerenza tra gli scenari di sviluppo e facilita la collaborazione del team. Per perfezionare ulteriormente il tuo ambiente, approfondisci le funzionalità Docker aggiuntive e le funzionalità avanzate di Laravel.