การพัฒนา 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
