وقتی سرویسی به ERROR میرود یا بعد از RUNNING مدام ریاستارت میشود، تقریباً همیشه لاگ علت را نشان میدهد.
گام ۱ — لاگ را بخوانید#
روی کارتِ سرویس پنلِ لاگ را باز کنید و از آخرین خط به بالا بخوانید. وضعیت، لاگ و شِل
| در لاگ | یعنی |
|---|---|
stack trace یا Error: | خطای کدِ خودِ اپ |
EADDRINUSE | دو پردازش روی یک پورت |
connection refused به دیتابیس | دیتابیس STOPPED است یا اطلاعاتِ اتصال اشتباه |
Killed یا OOM | RAMِ پک کافی نیست |
authentication failed یا Permission denied (publickey) | دسترسی به ریپوی خصوصی ناقص است |
گام ۲ — رایجترین علتها#
پورت#
پورتِ ویزارد باید همان پورتی باشد که اپ داخلِ container رویش گوش میدهد، و bind روی 0.0.0.0 باشد:
app.listen(process.env.PORT || 3000, "0.0.0.0");
build#
- مسیرِ Dockerfile یا compose اشتباه است.
npm ciبدونِpackage-lock.json.- بستهی خصوصیِ npm در ریپو بدونِ دسترسی.
- image برای
arm64ساخته شده؛amd64لازم است.
دیتابیس هنوز آماده نیست#
اپ قبل از دیتابیس بالا آمده. در کدِ اتصال retry بگذارید، یا بعد از RUNNING شدنِ دیتابیس RESTART بزنید.
منابع#
اگر لاگ OOM نشان میدهد، پکِ بزرگتر لازم است یا نشتِ حافظه دارید. منابع و پکها
اعتبار#
با اعتبارِ ناکافی، ساختِ سرویسِ جدید متوقف میشود. کیف پول
چکلیست#
- پورت درست و bind روی
0.0.0.0 - image محلی با
docker runامتحان شده - دیتابیس لینک شده و بعد از لینک DEPLOY زده شده
- پک برای مصرفِ RAM کافی است
هنوز حل نشد؟#
از پنل تیکت بزنید (یا با ۰۲۱-۸۸۷۱۷۴۵۱ تماس بگیرید) و اینها را بفرستید: نامِ سرویس، روشِ ساخت (image یا گیت)، پک، و آخرین خطوطِ لاگ.
