پکیج جدید و فوق العاده جذاب دیگه از لاراول به نام 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/
خب قبل از هر چیزی باید یه پروژه لاراولی داشته باشیم پس من یه پروژه جدید رو با استفاده از 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 استفاده میشن رو خالی کنید.
همه پورت هایی که این پکیج بهشون نیاز داره تا خالی باشن :
اگه به داکر مسلط هستید به راحتی میتونید فایل های داکر این پکیج رو کاستومایز کنید فقط کافیه دستور زیر رو اجرا کنید :
php artisan sail:publish
با استفاده از دستور بالا یه فولدر جدید با نام docker در روت پروژه پابلیش میشه که حاوی داکر فایل هایی هستن که داکر برای بیلد استفاده میکنه.
اگه به فایل docker-compose.yml دقت کنید.
شما هر چیزی که داخل فایل متغیر ها (.env) تعریف کردید از جمله پورت ها، اطلاعات دیتابیس، یوزر و پسورد دقیقا طبق همین ها دیتابیس یا هر سرویسی که مربوط به لاراول باشه بیلد میشه.
برای اینکه دستورات مختلف artisan و bash رو اجرا کنید، دستورات مخصوصش در این پکیج گذاشته شده :
./vendor/bin/sail artisan
با دستور بالا میتونید دستورات مربوط به Artisan رو اجرا کنید مثلا :
./vendor/bin/sail artisan migrate
اگه نیاز دارید که دستورات غیر از Artisan مثل npm یا دستورات ترمینال مختلفی رو اجرا کنید فقط کافیه با استفاده از دستور زیر وارد کانتینر در حال اجرا بشید :
./vendor/bin/sail shell
با زدن دستور بالا شما به ترمینال کانتینر ورود میکنید و حالا داخل پروژه اصلیتون که در حال اجرا هست قرار دارید و میتونید هر دستوری که میخواین رو اجرا کنید.
و اینکه اگر خواستید مستقیم به tinker وصل بشید :
./vendor/bin/sail tinker
برا اینکه هر سری بجای ./vendor/bin/sail فقط کلمه sail رو تایپ کنید کافیه یه alias در bash بسازید :
alias sail="bash ./vendor/bin/sail"
اگر دستور docker ps رو در ترمینال اجرا کنید همه کانتینر هایی که در حال اجرا هستند رو میبینید.
امیدوارم همه چیز رو خیلی خوب یاد گرفته باشید و برای اجرا مشکلی نداشته باشید، در غیر اینصورت توو کامنت ها وقت کنم حتما جوابتونو میدم.
هدف اصلی این پکیج راحت کردن و در دسترس گذاشتن اجرا اپلیکیشن های لاراولی با داکر برای همه هست.
خیلی از سرویس های خوب دیگه در این پکیج هستن که با توجه به بلند شدن مقاله میخوام در مقاله های بعدی معرفی کنم، با این پکیج یه محیط لوکال فوق العاده عالی که یه اپ لاراولی میتونه داشته باشه رو در اختیار خواهید داشت.
در مقاله بعدی میرم سراغ اجرای phpmyadmin (مدیریت دیتابیس)، استفاده از mailhog و ران کردن پروژه لوکال با یه دستور توو یه سرور رایگان و قابل دسترس در سطح اینترنت!