هل يمكنني إضافة خدمة runit في مكون إضافي؟

مرحباً، أتساءل عما إذا كان من الممكن إضافة خدمة runit في إضافة (plugin)؟ إذا لم يكن ذلك ممكناً، فسأكون ممتناً جداً لو شاركني استراتيجياتكم للتعامل مع مثل هذه المشكلات: لدي برنامج C++ يعمل لفترة طويلة ويجب أن يعمل بجانب discourse. يجب إعادة تشغيله تلقائياً ويتصرف أساساً كخدمة خلفية (daemon). شكراً جزيلاً.

يمكنك تثبيت الأشياء داخل ملف app.yml وتشغيل أوامر النظام داخل Rails للتحقق من الأشياء وتنفيذها. هل يمكنك تغليف موزع في مهمة عادية؟

إعجابَين (2)

هذا أمر مرهق حقًا. في الواقع المثالي، يحدث كل شيء داخل الإضافة.
شكرًا لك على إجابتك. :slight_smile: :+1:

يبدو النمط صحيحًا بالنسبة لي، حيث أن القوالب تشبه ملفات Docker Compose.

أستخدم هذا للتعديل وإجراء تعديلات بسيطة في إضافة Frotz الخاصة بـ Discourse. إنها تعمل بشكل متين وموثوق.

إعجابَين (2)

بالنسبة لبعض المهام طويلة الأمد في إضافة قمت بكتابتها، استخدمت واجهة المهام لتشغيل مهام Ansible قد تستغرق ساعات لإكمالها.

ولكن إذا كانت “بجانب” التطبيق، فيبدو أن قالبًا في ملف app.yml مناسب؛ أما إذا كانت “يبدأها Discourse”، فإن استخدام نظام المهام يكون منطقيًا.

إعجابَين (2)

لا يمكن ذلك. داخل الحاوية، يعمل كود الإضافة بالكامل باسم مستخدم discourse. لا يملك هذا المستخدم صلاحيات كافية (داخل الحاوية مرة أخرى) للتحكم في خدمات runit.

قم بتشغيل العملية في حاوية Docker أخرى على نفس العتاد. يجب أن تستمع إلى منفذ TCP محلي. قم بتصدير عنوان URL للاتصال بالخدمة الأخرى في كتلة env: في ملف app.yaml، على سبيل المثال:

env:
    CUSTOM_SERVICE_URL: 'localhost:5309'

اجعل الإضافة تجد سلسلة الاتصال عبر ENV["CUSTOM_SERVICE_URL"].

إعجابَين (2)