عامل الميناء-لا كرونتاب للجذر

يبدو أن ملف الإرساء الخاص بي يبني بشكل صحيح (يخبرني بذلك). عند تشغيل الحاوية ، أحصل على رسالة الخطأ أدناه. لقد حاولت تشغيل الأوامر (CMD) مع وبدون دليل الخدمة.

crontab.sh يكتب أساسا جدول كرون إلى ملف نصي (cron.jobs) ثم يستورد الملف النصي إلى كرونتاب.

دوكيرفيل:

FROM node:0.10MAINTAINER TomVOLUME /var/log/RUN mkdir /pulseADD . /pulseWORKDIR /pulseRUN apt-get update && apt-get install -y cronADD *.sh /pulse/RUN chmod 750 /pulse/crontab.sh && chmod 750 /pulse/RUN chmod 644 /etc/crontabCMD cron -fCMD touch /var/log/cron.log && sh /pulse/crontab.sh && tail -f /var/log/cron.logCMD cron /pulse/cron.jobsCMD crontab -l

edited to add crontab.sh

crontab.sh (تمت إزالة بعض كرونس):

#!/bin/bashcat <<- 'EOF' > cron.jobs0 * * * * node /pulse/scripts/awsPulseTest.js > /tmp/awsPulseTest.log 2>&1EOFcrontab cron.jobs

خطأ:

no crontab for root

ملاحظات جانبية:

  • نبض هو اسم الخدمة.
  • إصدار العقدة قديم بسبب الخدمة ، سيتم ترقية هذا.
  • الخدمة هي أساسا لوظائف كرون في العقدة

انها مشكلة مع دوكيرفيل (بدلا من الأوامر في الملف).واحد فقط CMD يتم تشغيل (آخر واحد) - انظر https://docs.docker.com/engine/reference/builder/#cmd

يمكن أن يكون هناك واحد فقط تعليمات سمد في دوكيرفيل. إذا قمت بإدراج أكثر من سمد واحد ثم فقط سمد الماضي نافذة المفعول.

كما أوضحت الإجابات الأخرى بالفعل ، واحد فقط CMD سيتم تشغيل كل دوكيرفيل والأمر الذي تريد تشغيله خاطئ.

ولكن هناك مشكلة أكثر إلحاحا مع الإعداد الخاص بك إيمو - حاويات عامل الميناء ليست مصممة عادة للعمل بهذه الطريقة. ما يجب عليك فعله بدلا من ذلك هو تشغيل خدمات كرون من المضيف (أو المنسق الخاص بك) كعمليات لمرة واحدة (ربما باستخدام شيء مثل docker run أو docker-compose run، أو ، إذا كنت لا تريد لسبب ما بدء حاوية منفصلة لهذا ، أعتقد أنه يمكنك استخدام docker exec).

هذا هو مجرد وجهة نظري حول كيفية استخدام الحاويات على الرغم من ذلك ، لذلك من الواضح يجب أن أعتبر مع حبة الملح.

إذا قمت بإضافة هذا إلى /etc/crontab، وهذا لن تظهر في كرونتاب الشخصية الجذر ، وهذا يحتوي فقط على كرونتاب المستخدم محددة تحريرها مع crontab -e، وليس على نطاق المنظومة في /etc.


مزيد من التفاصيل:

تخميني هو أن /pulse/crontab.sh (التي لا تظهر, لماذا ا?) يضيف خط كرونتاب ذات الصلة إلى ملف كرونتاب على نطاق النظام /etc/crontab. يمكنك تنفيذ الأمر لاحقا crontab -l، ولكن هذا يظهر خطأ فقط لأنه يسرد roots الشخصية كرونتاب فقط (الذي يحدث أن تكون فارغة) ، وليس واحد على مستوى النظام في /etc/crontab. هذا هو كل شيء طبيعي تماما والمتوقع. لإظهار الخط وأضاف السيناريو الخاص بك ، يمكنك استبدال CMD crontab -l مع CMD cat /etc/crontab.

كل هذا ليس له أي شيء مع أي أوامر دوكيرفيل مثل ADD, RUN أو CMD، انها مجرد الاشياء الأساسية لينكس.

مزيج من cron - docker - no crontab for root - Server Fault و cron - docker - no crontab for root - Server Fault ساعد على حل هذا.