ابران ابتدا Dockerfile repository را بررسی میکند. اگر Dockerfile وجود نداشته باشد، برای مسیرهای پشتیبانیشده Node.js و Go یک برنامه build تشخیص میدهد و دستورهای موقت تولید میکند. برای تنظیمهای آماده هر ecosystem، راهنمای Next.js، Node.js، Vite یا Go را ببینید.
ترتیب انتخاب تنظیمات
مقدار نهایی هر deployment با این ترتیب ساخته میشود؛ مورد پایینتر بر مورد بالاتر اولویت دارد:
- مقدارهای تشخیصدادهشده از source
- تنظیمات ذخیرهشده App
- فایل
abrun.yamlدر ریشه repository - گزینههای صریح همان 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 برنامه را بررسی کنید.