การพัฒนา Laravel ด้วย Docker จะช่วยให้เราควบคุมสภาพแวดล้อมได้ง่าย และสามารถแชร์โปรเจกต์ให้ทีมอื่นใช้ได้ทันทีโดยไม่ต้องติดตั้ง PHP หรือ Composer บนเครื่องเลย บทความนี้จะสอนคุณตั้งแต่ 0 จนเปิดเว็บ Laravel สำเร็จด้วย PHP 8.2 และ Nginx
โครงสร้างไฟล์โปรเจกต์
laravel-docker/ ├── docker-compose.yml ├── php/ │ └── Dockerfile ├── nginx/ │ └── default.conf └── src/ ← โฟลเดอร์ Laravel Project
docker-compose.yml
version: '3.8' services: app: build: context: ./php container_name: laravel-php82 working_dir: /var/www/html volumes: - ./src:/var/www/html networks: - appnet nginx: image: nginx:stable container_name: laravel-nginx ports: - "8080:80" volumes: - ./src:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - app networks: - appnet networks: appnet: driver: bridge
PHP Dockerfile: PHP 8.2 + Composer
สร้างไฟล์ php/Dockerfile
FROM php:8.2-fpm RUN apt-get update && apt-get install -y \ git curl unzip zip \ libzip-dev libpng-dev libjpeg62-turbo-dev libfreetype6-dev \ libonig-dev libxml2-dev \ && docker-php-ext-install pdo pdo_mysql mbstring zip exif pcntl COPY --from=composer:2 /usr/bin/composer /usr/bin/composer WORKDIR /var/www/html
Nginx Config สำหรับ Laravel
server { listen 80; index index.php index.html; server_name localhost; root /var/www/html/public; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include fastcgi_params; fastcgi_pass app:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~ /\.ht { deny all; } }
สร้าง Laravel (หรือคัดมาวางใน src/
)
หากยังไม่มี Laravel ให้สร้างแบบนี้:
docker compose run --rm app composer create-project laravel/laravel .
หรือคัด Laravel ของคุณไปใส่ในโฟลเดอร์ src/
เริ่มใช้งาน Laravel
docker compose up -d
เปิดเบราว์เซอร์ไปที่:
👉 http://localhost:8080
ทดสอบ artisan
docker compose exec app bash php artisan