এককালীন কাজের সমান্তরালে ক্রোন সেটআপ করুন
স্ক্রিপ্ট ফাইল তৈরি করুন, run.sh বলুন, যে কাজটি পর্যায়ক্রমে চালানোর কথা।
#!/bin/bash
timestamp=`date +%Y/%m/%d-%H:%M:%S`
echo "System path is $PATH at $timestamp"
সংরক্ষণ এবং ত্যাগ.
সিএমডির পরিবর্তে এন্ট্রিপয়েন্ট ব্যবহার করুন
চ ডকার কনটেইনারাইজেশনের সময় আপনার একাধিক কাজ রয়েছে, এগুলি চালানোর জন্য এন্ট্রিপয়েন্ট ফাইলটি ব্যবহার করুন।
এন্ট্রিপয়েন্ট ফাইল হ'ল একটি স্ক্রিপ্ট ফাইল যা ডকার রান কমান্ড জারি করা হলে কার্যকর হয়। সুতরাং, আমরা যে সমস্ত পদক্ষেপগুলি চালাতে চাই তা এই স্ক্রিপ্ট ফাইলে রাখা যেতে পারে।
উদাহরণস্বরূপ, আমাদের চালানোর জন্য 2 টি কাজ রয়েছে:
একবার কাজ চালান : প্রতিধ্বনি "ডকারের ধারক শুরু হয়েছে"
পর্যায়ক্রমিক কাজ চালান : run.sh
এন্ট্রিপয়েন্টপয়েন্ট তৈরি করুন sh
#!/bin/bash
# Start the run once job.
echo "Docker container has been started"
# Setup a cron schedule
echo "* * * * * /run.sh >> /var/log/cron.log 2>&1
# This extra line makes it a valid cron" > scheduler.txt
crontab scheduler.txt
cron -f
আসুন ফাইলটিতে সেট করা ক্রন্টবটি বুঝতে পারি
* * * * *
: ক্রোন শিডিউল; কাজটি প্রতি মিনিটে চালাতে হবে। আপনি আপনার প্রয়োজনের ভিত্তিতে সময়সূচি আপডেট করতে পারেন।
/run.sh
: স্ক্রিপ্ট ফাইলের পথ যা সময় সময় চালানো হয়
/var/log/cron.log
: নির্ধারিত ক্রোন কাজের আউটপুট সংরক্ষণ করার জন্য ফাইলের নাম।
2>&1
: ত্রুটি লগগুলি (যদি থাকে তবে) উপরে ব্যবহৃত একই আউটপুট ফাইলেও পুনঃনির্দেশিত হবে।
দ্রষ্টব্য : অতিরিক্ত একটি নতুন লাইন যুক্ত করতে ভুলবেন না, কারণ এটি এটিকে বৈধ ক্রোন করে।
Scheduler.txt
: সম্পূর্ণ ক্রোন সেটআপ কোনও ফাইলে পুনর্নির্দেশ করা হবে।
ক্রোন মধ্যে সিস্টেম / ব্যবহারকারী নির্দিষ্ট পরিবেশের ভেরিয়েবল ব্যবহার করে
পরিবেশের ভেরিয়েবলগুলি ডকার রান কমান্ডের কাছে পাঠানো হওয়ায় আমার আসল ক্রোন জব বেশিরভাগ যুক্তি প্রত্যাশা করেছিল। তবে, বাশ সহ, আমি সিস্টেম বা ডকারের ধারক অন্তর্ভুক্ত কোনও পরিবেশের ভেরিয়েবল ব্যবহার করতে পারিনি।
তারপরে, এটি এই সমস্যার ওয়ালকারাউন্ড হিসাবে উঠে এসেছে:
- এন্ট্রিপয়েন্ট.শিতে নিম্নলিখিত লাইনটি যুক্ত করুন
declare -p | grep -Ev 'BASHOPTS|BASH_VERSINFO|EUID|PPID|SHELLOPTS|UID' > /container.env
- ক্রোন সেটআপ আপডেট করুন এবং নির্দিষ্ট করুন-
SHELL=/bin/bash
BASH_ENV=/container.env
শেষ অবধি, আপনার entrypoint.sh
মত দেখতে হবে
#!/bin/bash
# Start the run once job.
echo "Docker container has been started"
declare -p | grep -Ev 'BASHOPTS|BASH_VERSINFO|EUID|PPID|SHELLOPTS|UID' > /container.env
# Setup a cron schedule
echo "SHELL=/bin/bash
BASH_ENV=/container.env
* * * * * /run.sh >> /var/log/cron.log 2>&1
# This extra line makes it a valid cron" > scheduler.txt
crontab scheduler.txt
cron -f
সর্বশেষে তবে সর্বনিম্ন নয়: একটি ডকফেরফিল তৈরি করুন
FROM ubuntu:16.04
MAINTAINER Himanshu Gupta
# Install cron
RUN apt-get update && apt-get install -y cron
# Add files
ADD run.sh /run.sh
ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /run.sh /entrypoint.sh
ENTRYPOINT /entrypoint.sh
এটাই. ডকার চিত্রটি তৈরি করুন এবং রান করুন!
RUN apt-get update && apt-get install cron