تصاویر در فندق

سرویس ها در فندق از روی ایمیج ها ساخته می شوند و از طرفی سرویس ها همواره در حال بهبود و تغییر هستند. برای آنکه بتوانیم تاریخچه تغییرات هر باره را در اختیار داشته باشیم، image ها دارای یک شماره نسخه منحصر به فرد خواهند بود که کاربر در هر بار publish کردن، آن را مشخص می کند.
به طور کلی در فندق هر Image معادل یک پروژه است و هر image دارای یک نام و تعداد دلخواه ورژن است.

راهنمایی

مفهوم Image و ImageVersion تقریبا شبیه به مفهوم Image و Tag در داکر است، که بعدا می‌توانید از روی هر ورژن از یک Image، به تعداد مورد نیاز سرویس ایجاد کنید.

ساخت ایمیج‌ها

به طور مثال فرض کنید شما پروژه ای به نام hello_application را در پوشه ای در رایانه شخصی خود دارید و حالا قصد دارید که این پروژه را بر روی فندق بارگذاری و اجرا نمایید. ابتدا از طریق Command Line به آدرس پوشه مورد نظر میروید.

Image Init

وقتی مطمئن شدید در آدرس مورد نظر هستید، با استفاده از دستور ‍‍‍init پروژه خود را برای بارگذاری بر روی سرور فندق آماده می‌کنید.

fandogh image init --name hello_application

name-- یا n-
پارامتر name یا n نمایانگر نام پروژه ای است که می‌خواهید بارگذاری کنید.


توجه

توجه داشته باشید که شما برای هر پروژه تنها یک بار نیاز دارید که از دستور init استفاده کنید و برای بارگذاری تنها نیاز است که هر بار یک شماره نسخه جدید را publish کنید.

هنگامی که شما در fandogh-cli دستور init را فراخوانی می‌کنید، سمت سرور فندق یک پروژه جدید با نامی که مشخص کرده‌اید )در این مثال نام پروژه ما hello_application است( می‌سازد. این پروژه در ابتدا حاوی هیچ ورژنی نبوده و فقط یک نام است که در ادامه از طریق ورژن‌هایی که برای آن می‌سازید، می‌توانید سرویس خود را اجرا کنید.

Image Publish

حال برای آنکه محتویات پوشه ای که داخل آن هستیم برای سرورهای فندق ارسال شود از دستور image publish استفاده می کنیم.

fandogh image publish --version 1.0

version-- یا v-
پارامتر version یا v نمایانگر ورژن پروژه ای است که می‌خواهید بارگذاری کنید.


نکته

توجه داشته باشید برای آنکه پروژه شما به درستی publish شود، حتما باید در قسمت root directory پروژه خود Dockerfile مربوط به آن پروژه را داشته باشید؛ در غیر این صورت در ادامه با مشکل مواجه خواهید شد.

زمانی که دستور publish را اجرا می‌کنید، fandogh-cli محتویات پوشه جاری را با فرمت zip فشرده کرده و به عنوان یک ورژن بخصوص که خودتان همانند دستور بالا آن را تعیین کرده اید، بر روی سرور فندق بارگذاری می‌کند. فایل فشرده شده سمت سرور فندق گشوده می‌شود و با استفاده از Dockerfile همراه فایل‌ها یک ایمیج داکر تولید شده و با ورژن مشخص شده تگ )شناسه گذاری( می‌شود و در کتابخانه فندق ذخیره می‌شود.

هنگام ساخته شدن Docker image از روی محتویات فایل فشرده، لاگ هایی مربوط به ساخت ایمیج تولید می‌شود. این لاگ ها بلافاصله بعد از publish موفق روی ترمینال شما قابل مشاهده خواهد بود؛ مگر آنکه از طریق d- یا detach به fandogh-cli گفته باشید که نیازی به مشاهده لاگ ندارید. برای آنکه به fandogh-cli بگویید که لاگ های ساخت ایمیج را به شما نمایش ندهد، می‌توانید مانند نمونه زیر از پارامتر detach استفاده کنید.

fandogh image publish --version 1.0 -d

detach یا d-
این پارامتر به fandogh-cli میگوید که همه کارها را در background انجام دهد تا کاربر بتواند از cli استفاده کرده و منتظر پایان کار سرور نماند.


fandogh-cli

هر زمان که نیاز داشته باشید می‌توانید از طریق fandogh image logs لاگ‌های مربوط به ساخت یک ورژن بخصوص را مشاهده کنید.

fandogh image logs --image IMAGE_NAME --version IMAGE_VERSION

image-- یا i-
پارامتر image یا i نمایانگر نام imageای است که می‌خواهید لاگ های آن را مشاهده کنید.

version-- یا v-
پارامتر version یا v نمایانگر ورژن imageای است که می‌خواهید لاگ های آن را مشاهده کنید.

کاهش حجم تصاویر

تصاویر یا همان imageها، عموما شامل محتوای مهم و اصلی برای راه‌اندازی اپلیکیشن هستند و همین موضوع باعث می‌شود حجم تصاویر هنگام آپلود بسیار کم باشد. شما باید از قرار دادن محتواهایی مانند media، .idea و ... داخل تصویر ایمیج پروژه خود‌داری کنید. یکی از روش‌هایی که برای مدیریت حجم ایمیج و فایل‌های ناخواسته مورد استفاده قرار می‌گیرد، استفاده از فایل dockerignore. در داکر و fandoghignore. در فندق است. شما می‌توانید به راحتی از هر دو این موارد در Fandogh CLI استفاده کنید. تنها کاری که باید انجام دهید، ایجاد فایل با اسم fandoghignore. یا dockerignore. در محل root پروژه است.

مهم

توجه داشته باشید نام فایل‌های مطرح شده، فرمتی در ادامه ندارند. در صورتی که اشتباهی در ساخت یا نام دهی صورت گیرد، این فایل‌ها کارایی مد نظر را نخواهند داشت.

برای نمونه می‌توانید به مثال زیر توجه کنید که در آن به Fandogh CLI می‌گوییم هنگام ساخت ایمیج و آپلود، پوشه‌ها و فایل‌های مطرح شده را در نظر نگیرد:

.fandoghignore | .dockerignore
node_modules/*
.git/*
.idea/*

در مثال بالا پوشه‌های node_modules، git و idea هنگام ساخت ایمیج در نظر گرفته نمی‌شوند؛ در نتیجه در ایمیج ساخته شده نهایی لحاظ نشده و حجم ایمیج کاهش می‌یابد.

مدیریت تصاویر

 CLI Image

دستورات مربوط به بخش image فقط محدود به init یا publish و logs نیست. کلیه دستورات مربوط به بخش image در ادامه توضیح داده شده‌اند.

fandogh-cli

شما همچنین می توانید با وارد کردن دستورfandogh image --help در fandogh-cli لیست دستورات موجود را مشاهده کنید.

init

با وارد کردن دستور fandogh image init --name IMAGE_NAME شما سمت سرور پروژه ای با نام IMAGE_NAME بر روی فندق می‌سازید تا بتوانید محتوای پروژه خود را با دستور publish بر روی آن منتقل کنید.

name-- یا n-
پارامتر name یا n نمایانگر نام پروژه‌ای است که می‌خواهید بارگذاری کنید.

publish

با وارد کردن دستور fandogh image publish --version IMAGE_VERSION می‌توانید پروژه خود را به سرور فندق ارسال کنید.

version-- یا v-
پارامتر version یا v نمایانگر ورژن پروژه‌ای است که می‌خواهید بارگذاری کنید.

detach یا d-
این پارامتر به fandogh-cli میگوید که همه کارها را در background انجام دهد تا کاربر بتواند از cli استفاده کرده و منتظر پایان کار سرور نماند.

logs

با استفاده از دستور fandogh image logs --image IMAGE_NAME --version IMAGE_VERSION می‌توانید لاگ های مربوط به ساخت هر ورژن از یک image مشخص را مشاهده کنید.

image-- یا i-
پارامتر image یا i نمایانگر نام imageای است که می‌خواهید لاگ های آن را مشاهده کنید.

version-- یا v-
پارامتر version یا v نمایانگر ورژن imageای است که می‌خواهید لاگ های آن را مشاهده کنید.

with_timestamp--
با استفاده از این پارامتر می‌توانید مدت زمان اجرای هر قدم از ساخت لایه‌های ایمیج را مشاهده کنید.
به این ترتیب متوجه می‌شوید در کل فرآیند ساخت ایمیج، کدام یک از لایه‌ها و دستورات زمان زیادی را صرف کرده‌اند تا آن‌ بخش‌ها را بهبود ببخشید.

list

با استفاده از دستور fandogh image list می‌توانید لیست تمام imageهایی که تا به حال ساخته‌اید را مشاهده کنید.

delete

با استفاده از دستور fandogh image delete --image IMAGE_NAME می‌توانید image با نام IMAGE_NAME را از رجیستری فندق پاک کنید.

هشدار

توجه داشته باشید که حذف image منجر به حذف تمام ورژن‌ها و لاگ‌های build آن image خواهد شد.

versions

با وارد کردن دستور fandogh image versions --image IMAGE_NAME می‌توانید لیست ورژن‌های مربوط به هر image را مشاهده کنید.

image-- یا i-
این پارامتر نمایانگر نام imageای است که می‌خواهید لیست ورژن های آن را مشاهده کنید.