workstation descargar linux docker cron crontab devops

linux - descargar - fedora live



Cómo ejecutar un trabajo cron dentro de un contenedor docker (3)

Intenté ejecutar un trabajo cron dentro de un contenedor docker

pero nada me funciona

mi contenedor solo tiene el archivo cron.daily y cron.weekly

crontab, cron.d, cron.hourly ... están ausentes en mi contenedor

crontab -e también no funciona

mi contenedor corre con / bin / bash


Aquí es cómo ejecuto uno de mis contenedores cron.

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

entrada.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!"

Construir como tal

docker build -t mycron .

Corre como tal

docker run -d mycron

Agregue sus propios scripts y edite el archivo crontab.txt y simplemente compile la imagen y ejecútela. Ya que se basa en alpino, la imagen es super pequeña.


gracias por esta plantilla

Sólo me pregunto acerca de una línea en entry.sh

/usr/sbin/crond -f -L 8

crond - ayuda a rendimientos:

Usage: crond -fbS -l N -d N -L LOGFILE -c DIR -f Foreground -b Background (default) -S Log to syslog (default) -l N Set log level. Most verbose:0, default:8 -d N Set log level, log to stderr -L FILE Log to FILE -c DIR Cron dir. Default:/var/spool/cron/crontabs

así que tal vez quisiste poner el pequeño l

/usr/sbin/crond -f -l 8

istead de la gran ''L''

/usr/sbin/crond -f -L 8

para establecer el nivel de registro en predeterminado, ya que parece que no se pretende especificar un archivo de registro llamado 8 .


crond funciona bien con tiny en Alpine

RUN apk add --no-cache tini ENTRYPOINT ["/sbin/tini", "--"] CMD ["/usr/sbin/crond", "-f"]

pero no debe ejecutarse como proceso principal de contenedor (PID 1) debido a un problema de cosecha de zombis y problemas con el manejo de la señal. Vea esta publicación de Docker y esta publicación del blog para más detalles