Docker برای Laravel — از صفر تا اجرای پروژه در container
«روی سیستم من کار میکرد» با Docker کمتر تکرار میشود — همان PHP، extension و نسخه برای همه. برای Laravel developer، Docker ابتدا محیط dev است؛ production با Compose یا orchestrator جدا بحث دارد.
نصب Docker
Windows: Docker Desktop + WSL2. Linux: docker.io یا Docker CE. بعد از نصب:
docker --version
docker run hello-world
Dockerfile پایه Laravel
FROM php:8.3-cli
RUN apt-get update && apt-get install -y \
git unzip libzip-dev libpng-dev \
&& docker-php-ext-install pdo_mysql zip gd
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /var/www
COPY . .
RUN composer install --no-dev --optimize-autoloader
CMD ["php", "artisan", "serve", "--host=0.0.0.0", "--port=8000"]
برای dev معمولاً php:8.3-fpm + Nginx جدا — Nginx.
build و run
docker build -t my-laravel .
docker run -p 8000:8000 -v ${PWD}:/var/www my-laravel
-v mount کد — تغییر local بدون rebuild.
اجرای artisan در container
docker run --rm -v ${PWD}:/var/www -w /var/www my-laravel php artisan migrate
.dockerignore
node_modules
vendor
.git
.env
storage/logs/*
bootstrap/cache/*
build سریعتر — vendor در image یا mount جدا.
Laravel Sail
راه رسمی Laravel — Docker Compose از پیش تنظیم. اگر از صفر یاد میگیرید Dockerfile دستی درک عمیقتر میدهد؛ Sail سرعت روزمره.
تفاوت image و container
- Image — template immutable
- Container — instance در حال اجرا
اشتباهات
- ذخیره .env در image
- root بدون دلیل در production
- vendor حجیم در layer بدون cache
جمعبندی
گام بعد: Docker Compose با MySQL و Redis. Deploy: Ubuntu.