मैं एक डॉकर छवि बनाने की कोशिश कर रहा हूं जिसमें एक क्रॉन होगा । एक क्रॉन जो डॉकर फ़ाइल सिस्टम के विशेष स्थान से फ़ाइलों को हटा देगा । नीचे है मेरी Dockerfile
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
फ़ाइल क्रोंटैब बनाएं और इस तरह एक प्रविष्टि जोड़ें
उपयोगकर्ता की अपनी क्रोंटैब फ़ाइल में, आमतौर पर नीचे /var/spool/cron/USERNAME. यदि आप कमांड का उपयोग करते हैं तो यह वह जगह है जहां चीजें स्वचालित रूप से रखी जाती हैं crontab.
में /etc/cron.d
यदि आप इसे अंदर रखते हैं /etc/cron.d, फ़ाइल में उस उपयोगकर्ता का नाम होना चाहिए जिसे आप इसे चला रहे हैं, क्योंकि फ़ाइल और उपयोगकर्ता के बीच अन्यथा कोई संबंध नहीं है । लेकिन अगर आप उपयोग करते हैं crontab कमांड, क्रॉन विनिर्देश आपके उपयोगकर्ता से संबंधित क्रोंटैब में रखा जाएगा (या उस उपयोगकर्ता को जिसे आप निर्दिष्ट करते समय निर्दिष्ट करते हैं crontab), इसलिए आपको उपयोगकर्ता नाम शामिल नहीं करना है ।
तो इसे ठीक करने के लिए आप दो चीजों में से एक कर सकते हैं:
आप उस स्ट्रिंग से उपयोगकर्ता नाम को हटा सकते हैं जिसे आप क्रोंटैब कमांड में पास कर रहे हैं, ताकि यह इस तरह दिखे:
मुझे उसी संदर्भ में एक ही मुद्दा मिला है । मेरा सुझाव कंटेनर के स्टार्टअप पर जो कुछ भी आप चाहते हैं उसे करने के लिए एक बैश स्क्रिप्ट बनाना है । और फिर जेएसओएन सरणी सिंटैक्स का उपयोग करके इसे चलाने के लिए डॉकरफाइल में सीएमडी सेट करें ।
मेरे पास एक फाइल है start.sh कुछ सामान करने के लिए और मैं उपयोग करता हूं & इसे पृष्ठभूमि में चलाने के लिए और फिर मैं क्रॉन और अपाचे सर्वर को शुरू करने के लिए क्रॉन और अपाचे 2-अग्रदूत चलाता हूं ।