Mohamad
Mohamad
خواندن ۴ دقیقه·۴ سال پیش

ران کردن لاراول در لوکال با داکر Laravel Sail

https://laravel-news.com/laravel-sail
https://laravel-news.com/laravel-sail


پکیج جدید و فوق العاده جذاب دیگه از لاراول به نام Laravel Sail در دسامبر ۲۰۲۰ توسط تیلور اوتول (سازنده لاراول) رونمایی شد و حالا با این پکیج میتونید براحتی اپ لاراولیتون رو بدون هیچ تجربه ای با داکر ران کنید.

با این پکیج یا ایمیج شما حتی نیاز ندارید پکیج منیجر های composer و npm رو هم در سیستم خودتون نصب کنید و همینطور ماژول های نرم افزاری دیگه مثل mysql, nginx, redis و ...


نصب داکر

قبل از هر چیزی فقط کافیه داکر و داکر کامپوز رو روی سیستم عامل خودتون نصب کنید.

آموزش ها متنوع زیادی در سطح وب و داکیومنت های خود داکر وجود داره که میتونید استفاده کنید.

ویندوز :

https://docs.docker.com/docker-for-windows/install/

مک :

https://docs.docker.com/docker-for-mac/install/

لینوکس (ubuntu) :

https://docs.docker.com/engine/install/ubuntu/

لینوکس (centOS) :

https://docs.docker.com/engine/install/centos/

لینوکس (fedora) :

https://docs.docker.com/engine/install/fedora/


بعد از نصب داکر نیاز دارید داکر کامپوز هم نصب کنید که براحتی میتونید با خوندن داکیومنت مربوطه اش اینکارو انجام بدید :

https://docs.docker.com/compose/install/

حالا بریم برای ران کردن لوکال با Laravel Sail

خب قبل از هر چیزی باید یه پروژه لاراولی داشته باشیم پس من یه پروژه جدید رو با استفاده از cli استارت میزنم :

composer create-project laravel/laravel MyProject

حالا پروژه خودم رو باز میکنم، بعد از نصب پکیج ها و اقدامات اولیه برای پروژه مثل :

composer install cp .env.example .env php artisan key:generate

و شروع به نصب پکیج Laravel Sail میکنم :

composer require laravel/sail --dev

از اونجایی که فقط میخوام در زمان توسعه و لوکال از این پکیج استفاده کنم از آپشن --dev استفاده میکنم برای نصبش که دیگه در زمان پروداکشن این پکیج نصب نشه.


بعد از نصب شدن پکیج، برای اینکه مطمئن بشیم همه فایل هامون به درستی لود میشه یه دستور دیگه رو هم اجرا میکنم :

composer dumpautoload

حالا شروع به نصب پکیج در پروژه مون میکنم :

با دستور زیر یه فایل docker-compose.yml به روت پروژه مون پابلیش میشه که این فایل مخصوص داکر هست که با استفاده از اون میاد و ماژول های نرم افزاری که براش تعریف کردیم رو داکر شروع به بیلد میکنه (که جلوتر متوجه میشیم).

php artisan sail:install

حالا فقط کافیه یه دستور دیگه رو بزنیم و پروژه مون رو به همین راحتی روو لوکال بالا بیاریم :

./vendor/bin/sail up

دستور بالا چیز خاصی نیست! فقط میاد چنتا دستور داکر رو ران میکنه و بجای اینکه ما بریم و با دستور های داکر آشنا شیم خودش همه دستوراتشو میزنه و فقط همین رو برای بالا اوردن پروژه مون در اختیار ما گذاشته.

اگه میخوایم همه کانتینر ها در بک گراند اجرا بشه از آپشن -d استفاده میکنیم.

./vendor/bin/sail up -d

چیزی مثل دستور زیر اجرا میشه :

docker-compose up -d --build

داکر شروع میکنه به بیلد کردن سرویس هایی که توو فایل docker-compose.yml نامبرده شده مثل mysql، redis و ...

ما ایمیج های مختلفی رو توو داکر داریم (رسمی و غیر رسمی) که در داکر هاب (یه چی مثل گیت هاب میمونه) گذاشته شدن و میتونیم ازشون استفاده کنیم.

حتی میتونیم یه ایمیج خاص رو از داکر هاب از قبل دانلود کنیم :

docker pull mysql

خیلی خب، از بحث اصلی خارج نشیم!

بعد از دستور sail up ممکنه به یه سری از مشکلاتی بخوریم و اون خالی نبودن پورت هایی که با استفاده از داکر expose میشه در سیستم خودتون هست و باید اول پورت های localhost مثل 80 و 3306 که برای وب سرور و دیتابیس mysql استفاده میشن رو خالی کنید.

همه پورت هایی که این پکیج بهشون نیاز داره تا خالی باشن :

  • web server : 80
  • mysql : 3306
  • redis : 6309
  • mailhog : 1025, 8025

شخصی سازی

اگه به داکر مسلط هستید به راحتی میتونید فایل های داکر این پکیج رو کاستومایز کنید فقط کافیه دستور زیر رو اجرا کنید :

php artisan sail:publish

با استفاده از دستور بالا یه فولدر جدید با نام docker در روت پروژه پابلیش میشه که حاوی داکر فایل هایی هستن که داکر برای بیلد استفاده میکنه.

کانفیگ اطلاعات دیتابیس و ...

اگه به فایل docker-compose.yml دقت کنید.

شما هر چیزی که داخل فایل متغیر ها (.env) تعریف کردید از جمله پورت ها، اطلاعات دیتابیس، یوزر و پسورد دقیقا طبق همین ها دیتابیس یا هر سرویسی که مربوط به لاراول باشه بیلد میشه.

docker-compse.yml
docker-compse.yml


اجرا کردن دستورات مختلف در کانتینر (پروژه اجرا شده در لوکال) :

برای اینکه دستورات مختلف artisan و bash رو اجرا کنید، دستورات مخصوصش در این پکیج گذاشته شده :

./vendor/bin/sail artisan

با دستور بالا میتونید دستورات مربوط به Artisan رو اجرا کنید مثلا :

./vendor/bin/sail artisan migrate

اگه نیاز دارید که دستورات غیر از Artisan مثل npm یا دستورات ترمینال مختلفی رو اجرا کنید فقط کافیه با استفاده از دستور زیر وارد کانتینر در حال اجرا بشید :

./vendor/bin/sail shell

با زدن دستور بالا شما به ترمینال کانتینر ورود میکنید و حالا داخل پروژه اصلیتون که در حال اجرا هست قرار دارید و میتونید هر دستوری که میخواین رو اجرا کنید.

Laravel Sail Shell
Laravel Sail Shell

و اینکه اگر خواستید مستقیم به tinker وصل بشید :

./vendor/bin/sail tinker


نکته

برا اینکه هر سری بجای ./vendor/bin/sail فقط کلمه sail رو تایپ کنید کافیه یه alias در bash بسازید :

alias sail=&quotbash ./vendor/bin/sail&quot

اگر دستور docker ps رو در ترمینال اجرا کنید همه کانتینر هایی که در حال اجرا هستند رو میبینید.

در آخر...

امیدوارم همه چیز رو خیلی خوب یاد گرفته باشید و برای اجرا مشکلی نداشته باشید، در غیر اینصورت توو کامنت ها وقت کنم حتما جوابتونو میدم.

هدف اصلی این پکیج راحت کردن و در دسترس گذاشتن اجرا اپلیکیشن های لاراولی با داکر برای همه هست.

خیلی از سرویس های خوب دیگه در این پکیج هستن که با توجه به بلند شدن مقاله میخوام در مقاله های بعدی معرفی کنم، با این پکیج یه محیط لوکال فوق العاده عالی که یه اپ لاراولی میتونه داشته باشه رو در اختیار خواهید داشت.


در مقاله بعدی میرم سراغ اجرای phpmyadmin (مدیریت دیتابیس)، استفاده از mailhog و ران کردن پروژه لوکال با یه دستور توو یه سرور رایگان و قابل دسترس در سطح اینترنت!

laravelلاراولداکرdockerphp
Software Engineer | Blogger | Tech Enthusiast
شاید از این پست‌ها خوشتان بیاید