پایتون با طعم فندق

فندق چیست؟

فندق یک سکو برای راه‌اندازی و نگهداری سرویس‌های نرم‌افزاری است که به کابران اجازه می‌دهد به طور منعطف و مقیاس‌پذیر سرویس‌های نرم‌افزار خود را راه‌اندازی کنند و متناسب با منابعی که مصرف می‌کنند هزینه کنند.

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


داکر چیست؟

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

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


نقشه چیست؟

با هم یک پروژه پایتونی ساده را گام به گام ابتدا داکرایز (در قالب داکر پیاده‌سازی شده) می‌کنیم و سپس برای اجرا بر روی فندق می‌فرستیم (دیپلوی می‌کنیم)




آماده‌سازی

برای استفاده از فندق ابتدا باید در فندق عضو شوید

سپس برای ارتباط با فندق باید CLI (اپ رابط متنی) فندق را نصب کنید، نصب از طریق pip راهکار مناسبی است (شاید نیاز به دسترسی روت باشد)

pip install fandogh-cli

حالا با دستور زیر و با اطلاعات شناسه کاربریتان از طریق CLI وارد فندق شوید

fandogh login


داکرایز

در قدم دوم و اصلی باید پروژه پایتونی را تبدیل به یک ایمیج داکر کنیم

به عنوان نمونه یک ربات تلگرامی ساده با استفاده از کتابخانه python telegram bot نوشته‌ام که در پاسخ به پیام‌های متنی شما پاسخی ساده می‌دهد

https://gist.github.com/mostafaasadi/66628078dc3e3da2578ed316b41ba99b

این ربات به سادگی با نصب کتابخانه پیشنیاز بوسیله پایتون۳ قابل اجراست

حال در همان مسیری که فایل ربات قرار دارد فایلی با نام Dockerfile بسازید

این Dockerfile شیوه ساخت، اجرا و نیازمندی‌های برنامه شما برای ساخت کانتینر را به داکر معرفی می‌کند

برای پروژه‌ای با پایتون خالص (همین ربات خودمان) محتویات فایل داکر باید چنین باشد

FROM python:latest
COPY bot.py .
RUN pip3 install python-telegram-bot --upgrade
ENTRYPOINT [ "python3" ]
CMD ["bot.py"] 

خط اول به داکر می‌گوید که تصویر پایه برای ساخت این ایمیج، ایمیج پایتون(آخرین نسخه) است

خط دوم نیز فایل اصلی ربات را به کانتینر انتقال می‌دهد (شما می‌توانید متناسب نیاز فایل‌های دیگری را نیز اضافه کنید)

خط سوم کتابخانه python-telegram-bot (یا هر پیشنیاز دیگر برای پروژه) را از طریق pip نصب می‌کند (البته روش‌های دیگری نیز برای این منظور هست)

خط چهارم نیز شیوه شروع اجرا را مشخص می‌کند

خط پنجم هم دستور اجرایی ربات را نشان می‌دهد

درباره ساختار فایل داکر اینجا را بخوایند

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

fandogh image init --name=fandoghibot

تا با پیام Image created successfully مواجه شوید، سپس با دستور زیر ایمیج را بسازید (ورژن را مشخص کنید)

fandogh image publish --version v1

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


اجرا بر روی فندق

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

حال باید آن را روی فندق اجرا کنیم

fandogh service deploy --version v1 --name fandoghibot

با دستور بالا به فندق می‌گوییم که ورژن یک از ایمیج fandoghibot که در مرحله قبل ساخته‌ایم را در قالب یک سرویس اجرا کن

پس از پاسخ موفقیت‌آمیز اجرای سرویس توسط CLI، اگر به داشبورد هم بروید، سرویس در حال اجرا قابل مشاهده است

اگر ربات هم تست کنیم، پاسخ می‌دهد ?


منابع و مستندات

https://docs.fandogh.cloud/docs/getting-started.html

https://docs.docker.com/engine/reference/builder/

https://stackabuse.com/dockerizing-python-applications/

https://blog.fandogh.cloud/articles/how-write-docker-file.html

https://blog.fandogh.cloud/articles/fandogh-introduction.html