Melaksanakan tugas cron dalam bekas docker: panduan langkah demi langkah
P粉914731066
P粉914731066 2023-10-10 18:54:39
0
2
443

Saya cuba menjalankan cronjob di dalam bekas docker yang memanggil skrip shell.

Saya telah mencari dalam talian dan pada limpahan tindanan semalam tetapi saya tidak dapat mencari penyelesaian yang benar-benar berkesan.

Bagaimana saya boleh melakukan ini?

P粉914731066
P粉914731066

membalas semua (2)
P粉563831052

Jawapan yang diterimaboleh berbahaya dalam persekitaran pengeluaran.

Apabila anda menggunakanCMD cron && tail -f /var/log/cron.log时,cron进程基本上会分叉以便在后台执行cron,主进程退出并让您在前台执行tailf. Proses cron latar belakang mungkin berhenti atau gagal tanpa anda sedari, bekas anda masih akan berjalan dengan senyap dan alat orkestra anda tidak akan memulakannya semula.

Menggunakan ubah hala shell asas, anda mungkin mahu melakukan sesuatu seperti ini:

* * * * * root echo hello > /proc/1/fd/1 2>/proc/1/fd/2

CMD anda ialah:CMD ["cron", "-f"]

Tetapi: Bagaimana jikaanda ingin menjalankan tugassebagai pengguna bukan root.

    P粉818125805

    Anda boleh menyalincrontabke dalam imej supaya bekas yang dilancarkan daripada imej itu menjalankan tugas.


    Penting: Seperti dalamdocker-cron isu 3: GunakancronLF untukfail, bukan CRLF.


    LihatMenjalankan kerja cron dengan Docker" /github.com/julienboulay" rel="noreferrer">Julien Boulay dalamEkito/docker-cronnya:

    2>&1:

    # must be ended with a new line "LF" (Unix) and not "CRLF" (Windows) * * * * * echo "Hello world" >> /var/log/cron.log 2>&1 # An empty line is required at the end of this file for a valid cron file.
    Jika anda tertanya-tanya apakah itu 2>&1 , Ayman Houriehterangkan

    .

    FROM ubuntu:latest MAINTAINER docker@ekito.fr RUN apt-get update && apt-get -y install cron # Copy hello-cron file to the cron.d directory COPY hello-cron /etc/cron.d/hello-cron # Give execution rights on the cron job RUN chmod 0644 /etc/cron.d/hello-cron # Apply cron job RUN crontab /etc/cron.d/hello-cron # Create the log file to be able to run tail RUN touch /var/log/cron.log # Run the command on container startup CMD cron && tail -f /var/log/cron.log
    cronNamun: jika mati,bekas

    terus berjalan

    .(lihatGaafar'skomenapt-getdanBagaimana untuk membuatapt-get
    memasang kurang bising?apt-get -y install -qq --force-yes cron:

    apt-get -y install -qq --force-yes cron

    juga berfungsi)SepertiNathan Lloydmengulas

    pada
    :

    Sebagai alternatif, pastikan tugas anda sendiri mengubah hala terus ke stdout/stderr dan bukannya fail log, seperti yang dinyatakan dalamhugoShaka's

    jawapan

    :

    * * * * * root echo hello > /proc/1/fd/1 2>/proc/1/fd/2

    Ganti baris Dockerfile terakhir dengan

    CMD ["cron", "-f"]
    Tetapi: Bagaimana jikaanda ingin menjalankan tugas

    sebagai pengguna bukan root

    .cron -f,即cron“前台”)“docker ubuntucron -fLihat juga (tentangcron -f

    , cron "frontend") "docker ubuntucron -f
    Not bekerja


    Bina dan jalankannya:

    sudo docker build --rm -t ekito/cron-example . sudo docker run -t -i ekito/cron-example
    Hello world Hello world
    Eric

    menambah dalam komen:

    Lihat "dockerCMD”末尾的tail -foutput > tidak ditunjukkan".


    Lihat "Running Cron in Docker" untuk maklumat lanjut (April 2021) daripadaJason Kulatungasambil diakomen di bawah

    Lihat imej JasonAnalogJ/docker-cronBerdasarkan:

    • Pemasangan fail Dockercronie/crond, bergantung pada pengedaran.

    • Titik masuk dimulakan/etc/environmentdan kemudian memanggil

      cron -f -l 2
      Muat turun terkini
      Lagi>
      kesan web
      Kod sumber laman web
      Bahan laman web
      Templat hujung hadapan
      Tentang kita Penafian Sitemap
      Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!