Skip to Content
خط فرمان (CLI)کار با CLI

کار با CLI

دیپلوی سرویس از پوشه محلی

ساخت یا به‌روزرسانی یک سرویس همیشه‌روشن بدون اتصال Git.

کافی است در ریشه پروژه gerdoo deploy را اجرا کنید؛ دستور بدون نیاز به فلگ کار می‌کند. اگر سرویسی هدف‌گذاری نشده باشد، CLI به‌صورت خودکار یک سرویس جدید می‌سازد (نام = نام پوشه، پروژه = Default) و روی ترمینال یک‌بار تأیید می‌گیرد. برای رد شدن از این تأیید (مثلاً در CI) فلگ --yes یا -y را بدهید.

می‌توانید با فلگ‌ها مقادیر پیش‌فرض را تغییر دهید: --name <name> نام سرویس، --project <slug|id> پروژه مقصد، --private خصوصی‌کردن سرویس، --port N پورت داخلی، --framework <name> راهنمای تشخیص استک و --env K=V (تکرارپذیر). نیازی به انتخاب پلن نیست؛ منابع بر اساس سطح حساب محدود و بر مبنای مصرف واقعی محاسبه می‌شوند.

بعد از اولین دیپلوی، فایل .gerdoo/service.json در پروژه ذخیره می‌شود و شناسه سرویس را نگه می‌دارد. از آن به بعد اجرای gerdoo deploy در همان پوشه همان سرویس را به‌روزرسانی می‌کند. برای دیپلوی صریح روی یک سرویس مشخص از gerdoo deploy --service <slug-or-id> استفاده کنید.

CLI تا وضعیت نهایی منتظر می‌ماند و مراحل بیلد و استقرار را چاپ می‌کند. اگر وضعیت running شود، URL سرویس را نمایش می‌دهد؛ اگر failed شود، خطای ذخیره‌شده را برمی‌گرداند.

مدیریت سرویس و Docker Image

ساخت سرویس از ایمیج Docker یا دیپلوی سورس به سرویس always-on.

برای دیدن سرویس‌ها از gerdoo services یا gerdoo service list و برای دیدن پروژه‌ها از gerdoo projects استفاده کنید. سرویس‌ها پلن انتخابی ندارند؛ منابع بر اساس سطح حساب محدود و بر مبنای مصرف واقعی محاسبه می‌شوند.

اگر ایمیج آماده دارید، gerdoo service create --name <name> --image <image> سرویس را می‌سازد. با --private سرویس عمومی نمی‌شود، با --expose tcp برای دیتابیس‌ها پورت خام TCP می‌گیرید و با --port پورت داخلی برنامه را مشخص می‌کنید.

اگر می‌خواهید یک پوشه محلی را به سرویس همیشه‌روشن تبدیل کنید، gerdoo service deploy --name <name> را اجرا کنید. سورس آپلود می‌شود، روی Runtime بیلد می‌شود و به عنوان سرویس اجرا می‌گردد. برای دیپلوی دوباره روی سرویس ساخته‌شده از gerdoo service deploy --service <slug-or-id> استفاده کنید.

برای کنترل و نگهداری سرویس این دستورها در دسترس‌اند: gerdoo service status|logs|restart|delete <slug>؛ مدیریت فایل‌های دیسک با gerdoo service files|pull|push؛ به‌روزرسانی تنظیمات با gerdoo service update.

برای استقرارها و بازگشت به نسخه قبلی: gerdoo service builds <slug> فهرست بیلدها، gerdoo service releases <slug> فهرست ریلیزها و gerdoo service rollback <slug> <build-id> بازگشت به یک بیلد قبلی را بدون بیلد دوباره انجام می‌دهد. برای دامنه‌های اختصاصی از gerdoo service domains <slug> و برای متغیرهای بیلد/محرمانه از gerdoo service vars <slug> استفاده کنید.

مدیریت پروژه‌ها و محیط‌ها

ساخت و مدیریت پروژه‌ها (فضای کاری) و محیط‌های آن‌ها از خط فرمان.

پروژه، فضای کاری‌ای است که سرویس‌ها، محیط‌ها و دامنه‌های یک محصول را گروه‌بندی می‌کند. با gerdoo projects فهرست پروژه‌ها و با gerdoo project get <slug|id> جزئیات یک پروژه را می‌بینید. برای ساخت، ویرایش و حذف از gerdoo project create --name <n>، gerdoo project update <slug|id> و gerdoo project delete <slug|id> استفاده کنید.

هر پروژه می‌تواند چند محیط (production، staging، preview) داشته باشد. محیط‌ها زیر gerdoo project env <project> مدیریت می‌شوند: list، create، get، update و delete. شناسهٔ محیط را با نام یا id بدهید؛ مثلاً gerdoo project env my-app create --type staging --branch develop.

متغیرهای هر محیط با gerdoo project env <project> vars <env> مدیریت می‌شوند: بدون آرگومان فهرست می‌گیرید، با set KEY=VALUE مقدار اضافه/ویرایش می‌کنید (با --build-time برای تزریق در زمان بیلد) و با rm KEY حذف می‌کنید.

دستورهای فهرست و نمایش (projects، project get، env list/get/vars) فلگ --json را می‌پذیرند تا پاسخ خام API چاپ شود؛ این برای اسکریپت‌نویسی و CI مناسب است.

متغیرهای محیطی، لاگ و وضعیت

بررسی وضعیت سرویس و تغییر تنظیمات بدون ورود به پنل.

دستورهای کوتاه env، logs، status و open همگی شناسه سرویس (slug یا id) را به‌صورت آرگومان موقعیتی می‌گیرند. برای مثال gerdoo env <slug> متغیرها را نشان می‌دهد، gerdoo env <slug> set KEY=VALUE مقدار اضافه یا ویرایش می‌کند و gerdoo env <slug> rm KEY مقدار را حذف می‌کند. سرویس برای اعمال تغییر دوباره ساخته می‌شود.

همین کارها زیر فرمان service هم در دسترس‌اند: gerdoo service env <slug> [set KEY=VALUE | rm KEY] که معادل کامل دستور کوتاه است. در کنار آن، gerdoo service vars <slug> یک انبار متغیر تایپ‌دار جداست که از --build-time (تزریق در زمان بیلد) و --secret (ماسک کردن مقدار) پشتیبانی می‌کند؛ env نقشهٔ سادهٔ سرویس و vars انبار تایپ‌دار است و هر دو در دسترس‌اند.

gerdoo logs <slug> --tail N آخرین خطوط لاگ کانتینر را نشان می‌دهد (پیش‌فرض ۲۰۰ خط). gerdoo status <slug> وضعیت، URL و در صورت اجرا مصرف CPU و حافظه را چاپ می‌کند و gerdoo open <slug> آدرس سرویس را در مرورگر باز می‌کند.

برای کنترل چرخه حیات، تنها عملیات gerdoo service restart <slug> وجود دارد؛ سرویس‌ها همیشه‌روشن‌اند و دکمه توقف/شروع جداگانه ندارند. برای حذف کامل از gerdoo service delete <slug> استفاده کنید.

نمونه‌های کاربردی

دیپلوی سرویس از پوشه محلی

اولین deploy یک سرویس جدید می‌سازد و پروژه را لینک می‌کند. دفعات بعد در همان پوشه، gerdoo deploy همان سرویس را به‌روزرسانی می‌کند.

gerdoo login gerdoo deploy # می‌سازد و دیپلوی می‌کند (با --yes بدون تأیید) gerdoo status my-app gerdoo logs my-app --tail 200

متغیر محیطی و CI

در CI، توکن را به صورت secret نگه دارید و با GERDOO_TOKEN به CLI بدهید تا نیازی به login تعاملی نباشد. فلگ --yes از تأیید تعاملی هنگام ساخت سرویس جدید رد می‌شود.

gerdoo env my-app set NODE_ENV=production API_URL=https://api.example.com gerdoo deploy # CI example GERDOO_TOKEN="$GERDOO_TOKEN" gerdoo deploy --service my-app --yes

سرویس Docker Image

سرویس‌ها همیشه‌روشن‌اند و پلن انتخابی ندارند؛ منابع بر اساس سطح حساب محدود و بر مبنای مصرف واقعی محاسبه می‌شوند. می‌توانید از ایمیج آماده استفاده کنید یا با gerdoo service deploy یک پوشه محلی را به سرویس تبدیل کنید.

gerdoo service create --name redis-cache --image redis:7 --private gerdoo service status redis-cache gerdoo service logs redis-cache --tail 100

بیلدها، ریلیزها و بازگشت به نسخه قبلی

هر دیپلوی موفق یک بیلد و ریلیز جدید ثبت می‌کند. rollback همان بیلد قبلی را بدون ساخت دوباره اجرا و یک ریلیز فعال جدید ایجاد می‌کند.

gerdoo service builds my-app gerdoo service releases my-app gerdoo service rollback my-app <build-id>

مدیریت پروژه و محیط

پروژه فضای کاری سرویس‌هاست. هر پروژه می‌تواند چند محیط داشته باشد و هر محیط متغیرهای خود را دارد. فلگ --json خروجی خام API را برای اسکریپت‌نویسی چاپ می‌کند.

gerdoo project create --name shop --description "Online store" gerdoo project env shop create --type staging --branch develop gerdoo project env shop vars staging set DATABASE_URL=postgres://… --build-time gerdoo projects --json

متغیرها، دامنه و انبار تایپ‌دار

service vars انبار متغیر تایپ‌دار با پشتیبانی از --secret و --build-time است. service domains add رکوردهای DNS موردنیاز را نشان می‌دهد و verify پس از ساخت رکورد TXT مالکیت دامنه را تأیید می‌کند.

gerdoo service vars my-app set STRIPE_KEY=sk_live_… --secret gerdoo service domains my-app add app.example.com gerdoo service domains my-app verify app.example.com