پیکربندی build برنامه

Dockerfile، monorepo، پورت runtime و abrun.yaml را برای build منبع در ابران تنظیم کنید.

آخرین بازبینی:


ابران ابتدا Dockerfile repository را بررسی می‌کند. اگر Dockerfile وجود نداشته باشد، برای مسیرهای پشتیبانی‌شده Node.js و Go یک برنامه build تشخیص می‌دهد و دستورهای موقت تولید می‌کند. برای تنظیم‌های آماده هر ecosystem، راهنمای Next.js، Node.js، Vite یا Go را ببینید.

ترتیب انتخاب تنظیمات

مقدار نهایی هر deployment با این ترتیب ساخته می‌شود؛ مورد پایین‌تر بر مورد بالاتر اولویت دارد:

  1. مقدارهای تشخیص‌داده‌شده از source
  2. تنظیمات ذخیره‌شده App
  3. فایل abrun.yaml در ریشه repository
  4. گزینه‌های صریح همان deploy

deployment نتیجه نهایی و منبع هر تنظیم را snapshot می‌کند تا بررسی build بعداً قابل‌تکرار باشد.

استفاده از Dockerfile

اگر Dockerfile در build context وجود داشته باشد، همان فایل مرجع build است:

abrun deploy <app>

برنامه باید در runtime روی 0.0.0.0 و پورت تنظیم‌شده App گوش دهد. .dockerignore را نیز طوری تنظیم کنید که credential، .env، dependencyهای محلی و artifactهای غیرضروری وارد build context نشوند.

monorepo و Dockerfile سفارشی

برای یک deploy می‌توانید build context و Dockerfile را صریح انتخاب کنید:

abrun deploy api . \ --root-directory apps/api \ --dockerfile-path Dockerfile \ --port 8080

هر دو path نسبت به repository هستند و اجازه خروج با .. یا path مطلق را ندارند. dockerfile-path داخل build context انتخاب‌شده resolve می‌شود.

برای ذخیره این مقدارها در کنسول، صفحه App را باز کنید و در Settings بخش deploy configuration، مقدارهای Build context، Dockerfile و Port را تنظیم کنید.

فایل اختیاری abrun.yaml

abrun.yaml فقط برای hintهای build و runtime است؛ این فایل جای تعریف domain، disk، replica، database یا secret نیست.

builder: root: apps/api dockerfile: Dockerfile platform: node version: '22' package_manager: pnpm apt: - libvips-dev install_command: pnpm install --frozen-lockfile build_command: pnpm build run_command: node dist/main.js runtime: port: 8080 health: /health

قواعد فعلی:

  • builder.platform در config منبع فقط node یا go را می‌پذیرد.
  • package_manager در schema یکی از npm، pnpm، yarn یا bun است و فقط برای Node معتبر است؛ generated Node builder فعلی Bun را رد می‌کند و برای آن باید Dockerfile داشته باشید.
  • runtime.port باید بین 1 و 65535 باشد.
  • runtime.health باید path مطلق مانند /health و بدون فاصله باشد.
  • field ناشناخته با شماره خط رد می‌شود.
  • چند سند YAML در یک فایل پشتیبانی نمی‌شود.

وقتی Dockerfile repository استفاده می‌شود، fieldهای مخصوص تولید خودکار مانند platform، package manager و commandها نادیده گرفته می‌شوند و ابران یک warning ثبت می‌کند؛ root، dockerfile، پورت و health همچنان در انتخاب مسیر و runtime نقش دارند.

بررسی build plan

پس از deploy، جزئیات deployment را در کنسول یا CLI باز کنید:

abrun app deployment list <app> abrun app deployment inspect <app> <deployment> abrun app deployment logs <app> <deployment>

platform، framework، package manager، commandها، پورت و منبع هر مقدار را با انتظار خود مقایسه کنید.

رفع مشکل

  • Dockerfile پیدا نمی‌شود: نسبت root-directory و dockerfile-path را دوباره بررسی کنید.
  • platform تشخیص داده نمی‌شود: Dockerfile اضافه کنید یا برای Node/Go از schema معتبر abrun.yaml استفاده کنید.
  • field نادیده گرفته شد: احتمالاً Dockerfile مرجع است و آن field فقط برای generator کاربرد دارد.
  • health check شکست می‌خورد: path، پورت و bind address برنامه را بررسی کنید.

قدم بعدی

این صفحه مفید بود؟

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