ران کردن لاراول در لوکال با داکر 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 : 80mysql : 3306redis : 6309mailhog : 1025, 8025شخصی سازیاگه به داکر مسلط هستید به راحتی میتونید فایل های داکر این پکیج رو کاستومایز کنید فقط کافیه دستور زیر رو اجرا کنید :php artisan sail:publishبا استفاده از دستور بالا یه فولدر جدید با نام docker در روت پروژه پابلیش میشه که حاوی داکر فایل هایی هستن که داکر برای بیلد استفاده میکنه.کانفیگ اطلاعات دیتابیس و ...اگه به فایل docker-compose.yml دقت کنید.شما هر چیزی که داخل فایل متغیر ها (.env) تعریف کردید از جمله پورت ها، اطلاعات دیتابیس، یوزر و پسورد دقیقا طبق همین ها دیتابیس یا هر سرویسی که مربوط به لاراول باشه بیلد میشه.docker-compse.ymlاجرا کردن دستورات مختلف در کانتینر (پروژه اجرا شده در لوکال) :برای اینکه دستورات مختلف artisan و bash رو اجرا کنید، دستورات مخصوصش در این پکیج گذاشته شده :./vendor/bin/sail artisanبا دستور بالا میتونید دستورات مربوط به Artisan رو اجرا کنید مثلا :./vendor/bin/sail artisan migrateاگه نیاز دارید که دستورات غیر از Artisan مثل npm یا دستورات ترمینال مختلفی رو اجرا کنید فقط کافیه با استفاده از دستور زیر وارد کانتینر در حال اجرا بشید :./vendor/bin/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 و ران کردن پروژه لوکال با یه دستور توو یه سرور رایگان و قابل دسترس در سطح اینترنت!