GNU/Linux >> Belajar Linux >  >> Linux

Cara menjalankan tugas cron di dalam wadah buruh pelabuhan

Inilah cara saya menjalankan salah satu wadah cron saya.

Dockerfile:

FROM alpine:3.3

ADD crontab.txt /crontab.txt
ADD script.sh /script.sh
COPY entry.sh /entry.sh
RUN chmod 755 /script.sh /entry.sh
RUN /usr/bin/crontab /crontab.txt

CMD ["/entry.sh"]

crontab.txt

*/30 * * * * /script.sh >> /var/log/script.log

entry.sh

#!/bin/sh

# start cron
/usr/sbin/crond -f -l 8

script.sh

#!/bin/sh

# code goes here.
echo "This is a script, run by cron!"

Bangun seperti itu

docker build -t mycron .

Jalankan seperti itu

docker run -d mycron

Tambahkan skrip Anda sendiri dan edit crontab.txt dan buat saja gambarnya dan jalankan. Karena didasarkan pada alpen, gambarnya sangat kecil.


crond bekerja dengan baik dengan kecil di Alpine

RUN apk add --no-cache tini

ENTRYPOINT ["/sbin/tini", "--"]
CMD ["/usr/sbin/crond", "-f"]

tetapi tidak boleh dijalankan sebagai proses utama kontainer (PID 1) karena masalah menuai zombie dan masalah dengan penanganan sinyal. Lihat PR Docker ini dan posting blog ini untuk detailnya.


Solusi @ken-cochrane mungkin yang terbaik, namun, ada juga cara untuk melakukannya tanpa perlu membuat file tambahan.

Untuk melakukannya tanpa file tambahan:

Caranya adalah mengatur cron di dalam entrypoint.sh Anda berkas.

Dockerfile


...

# Your Dockerfile above


COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

entrypoint.sh


echo "* * * * * echo 'I love running my crons'" >> /etc/crontabs/root
crond -l 2 -f > /dev/stdout 2> /dev/stderr &

# You can put the rest of your entrypoint.sh below this line

...


Linux
  1. Bagaimana Cara Menjalankan `date` Di Dalam Pekerjaan Tab Cron?

  2. Bagaimana Cara Menjalankan Perintah Di Dalam Wadah Systemd yang Berjalan?

  3. Cara Menjalankan MySQL Dalam Wadah Docker

  1. Bagaimana cara mengatur tugas cron untuk menjalankan yang dapat dieksekusi setiap jam?

  2. Bagaimana cara mengirim sinyal ke program yang dijalankan dalam wadah buruh pelabuhan?

  3. Bagaimana cara menambahkan pengguna ke wadah Docker?

  1. Bagaimana Cara Menjalankan Program Di Dalam Wadah Docker?

  2. Cara Menjalankan Perintah di Running Docker Container

  3. bagaimana cara menjalankan cron job setiap 3 bulan?