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