Mahdyar's Blog

My Thoughts

داکرایز کردن پروژه لاراول به کمک داکر و فندوق

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

فرض در این مطلب این هست که شما با لاراول و داکر آشنا هستید. اگر نمی‌دونید لاراول یا داکر چی هست می‌تونید از گوگل کمک بگیرید. 🙂

اگر می‌خواید بدونید در آخر قراره چی بشه و چی‌کار کنیم، باید بگم که قراره پروژمون مثل این‌جا بشه.

داکرایز کردن پروژه لاراول ، اما چی‌جوری؟

برای این‌کار، اول لازمه یک پروژهٔ لاراول داشته باشیم. من توی این آموزش قراره از پروژهٔ ساده زیر استفاده کنم:

https://github.com/mahdyar/simple-laravel-project

پروژه رو می‌تونید فورک کنید و کلون کنید یا مستقیم کلون کنید:

$ git clone https://github.com/mahdyar/simple-laravel-project.git

این پروژه، یک قلب ساده داره که با کلیک هر کاربر یکی به مقدارش اضافه می‌شه و تو دیتابیس ذخیره می‌شه. ساده‌ترین چیزی که می‌شد با لاراول زد و توش از دیتابیس هم استفاده بشه. چند وقت دیگه هم می‌شه فهمید چند نفر استفاده کردن از این آموزش! 🙂

داکرایز کردن یک پروژه لاراول
simple-laravel-project

بعد از کلون کردن، با دستور زیر:

$ php artisan serve

می‌تونید لاراول رو روی آدرس زیر ببینید:

http://127.0.0.1:8000

البته قبلش یک‌سری دیپندنسی داره که باید روی سیستم شما نصب باشه، که اون هم با سرچ پیدا می‌شه. ولی خب ما قراره روی داکر و فندوق پروژه‌مون رو بالا بیاریم.

ساخت دیتابیس

داخل وبسایت فندق، می‌تونید به صورت گرافیکی دیتابیس رو بسازید، ولی اگر دوست داشتید با کامند لاین بسازید:

$ fandogh managed-service deploy mysql 9.4 \
 -c service_name=simple-laravel-db \
 -c phpmyadmin_enabled=true \
 -c mysql_root_password=simplepassword

مشخصات بالا از داخل فایل .env پروژه برداشته شدن. اگر فورک کردید، اینجا هم یادتون نره که باید با مشخصات خودتون دیتابیس رو بسازید.

وقتی دستور بالا رو بزنید، فندق بهتون یک آدرس می‌ده که باهاش می‌تونید وارد phpmyadmin بشید و دیتابیس‌تون رو بسازید، دیتابیس باید با اسم زیر ساخته بشه:

simple-laravel-project

نصب داکر

برای نصب داکر، می‌تونید از لینک‌های زیر کمک بگیرید:

اگر از فدورای ۳۱ یا ۳۲ استفاده می‌کنید، احتمالاً مثل من به مشکل خواهید خورد. می‌تونید به جاش از podman استفاده کنید.

داکرایز کردن پروژه لاراول با نوشتن داکرفایل

به طور پیش‌فرض وقتی پروژه رو کلون کنید داکرفایل داخل‌ش هست، ولی پیشنهاد من اینه که فایل رو پاک کنید و با من قدم‌به‌قدم جلو برید.

در اولین قدم، میایم به داکر می‌گیم از ایمیج php، نسخه ۷ رو انتخاب کن.

FROM php:7

بعد از اون، در قدم‌های دوم تا چهارم، دیپندنسی‌های پروژه رو نصب می‌کنیم:

RUN apt-get update -y && apt-get install -y openssl zip unzip git
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN docker-php-ext-install pdo pdo_mysql

در مرحلهٔ پنجم، به داکر می‌گیم که محل پروژهٔ ما روی ایمیج کجا هست:

WORKDIR /app

و در قدم ششم، پروژه‌مون رو کپی می‌کنیم به محل پروژه‌مون روی ایمیج:

COPY . /app

در قدم هفتم، کامپوزر پیش‌نیازهای پی‌اچ‌پی رو نصب می‌کنه:

RUN composer install

و در قدم هشتم تا دهم، یک اسکریپت ساده که پروژهٔ مارو serve می‌کنه و مایگریشن‌ها رو انجام می‌ده رو اجرا می‌کنیم و بهش دسترسی اجرایی می‌دیم:

COPY ./run.sh /tmp
RUN ["chmod", "+x", "/tmp/run.sh"]
ENTRYPOINT ["/tmp/run.sh"]  

در قدم آخر هم، می‌گیم که پروژه قراره روی پورت ۸۰ اجرا بشه:

در آخر یک Dockerfile به شکلی که توی گیت‌هاب می‌تونید ببینید خواهیم داشت.

دیپلوی پروژه روی فندوق

برای این‌که پروژه‌تون رو روی فندوق دیپلوی کنید، نیاز دارید که ثبت‌نام کرده باشید، برای نصب‌ش می‌تونید از دستور زیر استفاده کنید:

$ pip3 install fandogh-cli

حالا وارد اکانت‌تون بشید:

$ fandogh login

بعد از این‌که لاگین کردید، ما نیاز داریم تا یک ایمیج از روی داکرفایل‌مون بسازیم، برای این‌منظور، از دستور زیر استفاده می‌کنیم، من نام ایمیج رو گذاشتم simple-laravel-project:

$ fandogh image init --name=simple-laravel-project

اگر موفقیت آمیز بود، نوبت پابلیش کردن‌ش می‌شه:

$ fandogh image publish --version v1.1

هر ایمیج می‌تونه ورژن‌های مختلفی داشته باشه، من این‌جا نسخهٔ ۱.۱ رو پابلیش کردم.

مرحلهٔ آخر هم دیپلوی کردن سرویس هست:

$ fandogh service deploy --version v1.1 --name simple-laravel-project

اگر همهٔ مراحل رو به‌درستی انجام داده باشید، فندق بهتون یک لینک مثل لینک زیر می‌ده:

https://simple-laravel-project-mahdyar.fandogh.cloud

یادتون نره روی قلب کلیک کنید! 😉