رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش نصب و راه‌اندازی Laravel با Docker Compose روی Ubuntu 22.04

آموزش نصب و راه‌اندازی Laravel با Docker Compose روی Ubuntu 22.04

این راهنما توسط دیدگاه تهیه شده و هدف آن ارائه یک آموزش کامل، کاربردی و در عین حال ساده برای راه‌اندازی فریم‌ورک Laravel با استفاده از Docker Compose روی Ubuntu 22.04 است. اگر می‌خواهید محیط توسعه‌ای استاندارد، قابل تکرار و نزدیک به محیط production داشته باشید، جای درستی آمده‌اید.


این راهنما توسط دیدگاه تهیه شده و هدف آن ارائه یک آموزش کامل، کاربردی و در عین حال ساده برای راه‌اندازی فریم‌ورک Laravel با استفاده از Docker Compose روی Ubuntu 22.04 است. اگر می‌خواهید محیط توسعه‌ای استاندارد، قابل تکرار و نزدیک به محیط production داشته باشید، جای درستی آمده‌اید.


مقدمه

کانتینرسازی یا Containerization یعنی اجرای یک برنامه به‌همراه تمام وابستگی‌هایش داخل محیط‌های ایزوله‌ای به نام کانتینر. نتیجه؟

برای آشنایی با سایر فریم‌ورک‌های محبوب PHP نیز می‌توانید این مقاله را ببینید.

  • محیط توسعه همه اعضای تیم یکی می‌شود

  • دیگر خبری از «روی سیستم من کار می‌کنه» نیست

  • توسعه، تست و دیپلوی ساده‌تر و قابل پیش‌بینی‌تر می‌شود

در این آموزش، با استفاده از Docker Compose یک پروژه Laravel را در قالب سه سرویس جداگانه اجرا می‌کنیم:

  • app: شامل PHP 7.4 (PHP-FPM)

  • db: دیتابیس MySQL 8

  • nginx: وب‌سرور برای ارائه اپلیکیشن

فایل‌های پروژه بین سیستم شما و کانتینرها سینک می‌شوند تا توسعه راحت و سریع باشد.


پیش‌نیازها

قبل از شروع، مطمئن شوید موارد زیر را دارید:

برای راهنمای کامل‌تر نصب Docker، آموزش نصب Docker روی اوبونتو را نیز مطالعه کنید.

  • Ubuntu 22.04 (لوکال یا سرور)

  • دسترسی sudo

  • Docker نصب‌شده

  • Docker Compose نصب‌شده

پیشنهاد دیدگاه: اگر روی سرور کار می‌کنید، حتما فایروال فعال باشد.


مرحله ۱: دریافت پروژه نمونه Laravel

ابتدا یک پروژه دمو Laravel را از GitHub دریافت می‌کنیم:

2 خط
cd ~
curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-1.0.1.zip -o travellist.zip
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

نصب unzip و استخراج فایل‌ها:

5 خط
sudo apt update
sudo apt install unzip
unzip travellist.zip
mv travellist-laravel-demo-tutorial-1.0.1 travellist-demo
cd travellist-demo
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مرحله ۲: تنظیم فایل .env

فایل .env محل تنظیمات وابسته به محیط است و نباید عمومی شود.

ساخت فایل:

2 خط
cp .env.example .env
nano .env
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تنظیمات دیتابیس را به شکل زیر تغییر دهید:

6 خط
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=travellist
DB_USERNAME=travellist_user
DB_PASSWORD=password
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

در اینجا db همان نام سرویس دیتابیس در Docker Compose است.


مرحله ۳: ساخت Dockerfile برای Laravel

برای اجرای Laravel به یک ایمیج اختصاصی PHP نیاز داریم.

ایجاد فایل Dockerfile:

nano Dockerfile
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

محتوا:

17 خط
FROM php:7.4-fpm

ARG user
ARG uid

RUN apt-get update && apt-get install -y \
    git curl zip unzip libpng-dev libonig-dev libxml2-dev

RUN docker-php-ext-install pdo_mysql mbstring bcmath gd

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && chown -R $user:$user /home/$user

WORKDIR /var/www
USER $user
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

این Dockerfile:

  • PHP-FPM را اجرا می‌کند

  • اکستنشن‌های لازم Laravel را نصب می‌کند

  • Composer را اضافه می‌کند

  • مشکل permission را از ریشه حل می‌کند


مرحله ۴: تنظیم Nginx و دیتابیس

تنظیم Nginx

2 خط
mkdir -p docker-compose/nginx
nano docker-compose/nginx/travellist.conf
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

کانفیگ:

15 خط
server {
  listen 80;
  root /var/www/public;
  index index.php;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    fastcgi_pass app:9000;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

تنظیم دیتابیس اولیه

2 خط
mkdir docker-compose/mysql
nano docker-compose/mysql/init_db.sql
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

(ایجاد جدول نمونه places برای تست اپلیکیشن)


مرحله ۵: ساخت docker-compose.yml

nano docker-compose.yml
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

ساختار نهایی:

39 خط
version: "3.9"
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        user: sammy
        uid: 1000
    volumes:
      - ./:/var/www
    networks:
      - travellist

  db:
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: ${DB_DATABASE}
      MYSQL_USER: ${DB_USERNAME}
      MYSQL_PASSWORD: ${DB_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
    volumes:
      - ./docker-compose/mysql:/docker-entrypoint-initdb.d
    networks:
      - travellist

  nginx:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./:/var/www
      - ./docker-compose/nginx:/etc/nginx/conf.d
    networks:
      - travellist

networks:
  travellist:
    driver: bridge
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

مرحله ۶: اجرای پروژه

3 خط
docker compose build app
docker compose up -d
docker compose ps
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

سپس در مرورگر:

http://localhost:8000
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

اگر صفحه Laravel را دیدید، همه‌چیز درست است.


نصب وابستگی‌ها و کلید Laravel

2 خط
docker compose exec app composer install
docker compose exec app php artisan key:generate
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

رفع مشکل Permission در Laravel

2 خط
docker compose exec app chown -R sammy:sammy storage bootstrap/cache
docker compose exec app chmod -R 775 storage bootstrap/cache
برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

این مرحله بسیار مهم است و جلوی خطاهای رایج Laravel را می‌گیرد.


استفاده از docker-compose.override.yml

برای جدا کردن محیط توسعه و production، از override استفاده کنید.

  • توسعه: bind mount + debug

  • production: image آماده + volume

این روش، تمیزترین و حرفه‌ای‌ترین ساختار ممکن است.


جمع‌بندی

با این ساختار:

  • محیط شما استاندارد و قابل تکرار است

  • توسعه و دیپلوی سریع‌تر می‌شود

  • مشکلات permission و dependency حذف می‌شوند

  • آماده مقیاس‌پذیری هستید

این دقیقاً همان روشی است که دیدگاه برای پروژه‌های حرفه‌ای Laravel پیشنهاد می‌دهد.

موفق باشید 🚀

برای راه‌اندازی سایر پروژه‌های محبوب با Docker Compose نیز می‌توانید نصب وردپرس با Docker Compose را ببینید.

زیرساخت ابری برای اجرای همین آموزش

سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

ادامه یادگیری:Docker·Ubuntu·VPS