بهینه سازی پوشش کد Node.js با NYC در کانتینرهای Docker

مشکلات خاصی برای دریافت پوشش NYC از Node.js وجود دارد که در کانتینرهای Docker کار می کنند. این وبلاگ رویه‌های مورد نیاز برای عملکرد خوشه‌های Node.js در Docker و تولید گزارش‌های پوشش کد قابل اعتماد را مورد بحث قرار می‌دهد.

چگونه به صورت مادری پوشش بگیریم؟

اجرای NYC به صورت محلی با یک دستور ساده ساده است:

"start": "nyc node ./dist/main.js",

با این حال، مراحل بیشتری برای دریافت پشتیبانی در داکر وجود دارد. بیایید تفاوت های ظریف این را بررسی کنیم.

چالش های مدیریت سیگنال در کانتینرهای داکر چیست؟

ارسال سیگنال وقفه به داکر در مورد ما کاملاً مشکل است. دلیل؟ به جای اجرای یک باینری، من یک اسکریپت را اجرا می کنم (تا بعداً در مورد آن صحبت کنیم).

شما خوانندگان عزیز من را می بینید، من با چه چیزی روبرو هستم؟ ظرف داکر من نمی میرد، اما چرا؟ این به دلیل کنترل سیگنال در Docker و رفتار پوسته است

.

  1. PID 1 در کانتینرها: در کانتینر Docker، فرآیند CMD یا ENTRYPOINT به صورت PID 1 اجرا می‌شود. این فرآیند مسئول کنترل سیگنال‌های سیستم است. هنگام استفاده ش یا ضربه شدید برای اجرای یک اسکریپت، ش تبدیل به فرآیند PID 1 در داخل ظرف می شود.

  2. ارسال سیگنال: پوسته (sh) به طور خودکار سیگنال ها را به پردازش های فرزند ارسال نمی کند. در عوض، خود سیگنال‌ها را کنترل می‌کند، و اغلب آنها را به فرآیندهایی که تولید می‌کند منتشر نمی‌کند.

    وقتی فشار می دهید …

Source link