عامل الميناء كرون لا يعمل

أحاول بناء صورة عامل الميناء التي سيكون لها كرون. وكرون الذي سيتم حذف الملفات من موقع معين من نظام الملفات عامل الميناء. أدناه هو بلدي دوكيرفيل

FROM ubuntu:latestMAINTAINER docker@ekito.frRUN apt-get update && apt-get -y install cron# Copy testfiles folder to docker container.COPY ./testfiles /opt/# Create the log file to be able to run tailRUN touch /var/log/cron.logRUN (crontab -l -u root; echo "* * * * * root rm -rf /opt/*") | crontab# Run the command on container startupCMD cronENTRYPOINT ["/bin/sh", "-c", "/bin/bash"]

كل شيء ناجح. يتم تعيين بلدي كرون أيضا في الحاوية

roadrunner:test shailesh$ docker run -it crontest /bin/bashroot@ac31f5acc49f:/# lsbin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  varroot@ac31f5acc49f:/# crontab -l* * * * * root rm -rf /opt/*root@ac31f5acc49f:/# cd /opt/root@ac31f5acc49f:/opt# ls  file1  file10  file11  file12  file13  file14  file15  file16  file17  file18  file19  file2  file20  file21  file22  file23  file24  file25  file3  file4  file5  file6  file7  file8  file9

ومع ذلك فإنه لا يعمل وحذف الملفات الموجودة في /opt/ مجلد. يمكن أن تقولوا لي ما هو الخطأ في التكوين.

جرب شيئا من هذا القبيل,

FROM ubuntu:latestMAINTAINER docker@ekito.frRUN apt-get update && apt-get -y install cron# Add crontab file in the cron directoryADD crontab /etc/cron.d/hello-cron# Give execution rights on the cron jobRUN chmod 0644 /etc/cron.d/hello-cron# Apply cron jobRUN crontab /etc/cron.d/hello-cron# Create the log file to be able to run tailRUN touch /var/log/cron.log# Run the command on container startupCMD cron && tail -f /var/log/cron.log

إنشاء ملف كرونتاب وإضافة إدخال مثل هذا

* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1

نأمل أن يكون هذا سوف تساعدك!!!

بناء الجملة كرونتاب الخاص بك هو الخطأ.

هناك نوعان من الأماكن حيث يمكنك وضع ملفات كرون:

  • في ملف كرونتاب الخاص بالمستخدم ، عادة تحت /var/spool/cron/USERNAME. هذا هو المكان الذي يتم فيه وضع الأشياء تلقائيا إذا كنت تستخدم الأمر crontab.
  • في /etc/cron.d

إذا قمت بوضعه في /etc/cron.d، يجب أن يحتوي الملف على اسم المستخدم الذي تقوم بتشغيله تحته ، نظرا لعدم وجود اتصال بين الملف والمستخدم. ولكن إذا كنت تستخدم crontab الأمر ، سيتم وضع مواصفات كرون في كرونتاب تابعة للمستخدم الخاص بك (أو للمستخدم الذي تحدده عند استدعاء crontab) ، لذلك لا تحتاج إلى تضمين اسم المستخدم.

لذلك لإصلاح هذا يمكنك القيام بأي واحد من أمرين:

  • يمكنك إزالة اسم المستخدم من السلسلة التي تمررها إلى الأمر كرونتاب ، بحيث يبدو مثل هذا:

    تشغيل (كرونتاب-ل-يو الجذر ؛ صدى "* * * * * جمهورية مقدونيا-رف /الأراضي الفلسطينية المحتلة/*") / كرونتاب
  • يمكنك وضع إدخال كرونتاب في ملف تحت /etc/cron.d بدلا من ذلك ، مثل هذا:

    >تشغيل (صدى "* * * * * الجذر جمهورية مقدونيا-الترددات اللاسلكية / الأراضي الفلسطينية المحتلة / * " /الخ / كرون.)د (

لدي نفس المشكلة في نفس السياق. نصيحتي هي إنشاء برنامج نصي باش للقيام بكل ما تريد عند بدء تشغيل الحاوية.
ثم قم بتعيين كمد في دوكيرفيل لتشغيله باستخدام بناء جملة جسون صفيف.

لدي ملف start.sh للقيام ببعض الاشياء وأنا استخدم & لتشغيله في الخلفية ومن ثم تشغيل كرون &أمبير ؛ &أمبير ؛ أباتشي 2-فورغرونغ لبدء كرون وخادم أباتشي.

هذا هو الأمر النهائي في نهاية ملف الإرساء الخاص بي:

CMD ./start.sh > web/startup.log & cron && apache2-foreground

Learn about when to use ENTRYPOINT vs CMD.