Tengo algunos problemas al intentar crear un contenedor que ejecute un cronjob. Puedo ver cron ejecutándose usando top en el contenedor, pero no escribe en el archivo de registro como lo intenta el siguiente ejemplo. El archivo permanece vacío.
He leído las respuestas a la misma pregunta aquí:
Pero no pude hacer que ninguna de las sugerencias funcionara. Por ejemplo, utilicé el dockerfile de aquí: https://github.com/Ekito/docker-cron/
FROM ubuntu:latest MAINTAINER docker@ekito.fr # Add crontab file in the cron directory ADD crontab /etc/cron.d/hello-cron # Give execution rights on the cron job RUN chmod 0644 /etc/cron.d/hello-cron # Create the log file to be able to run tail RUN touch /var/log/cron.log #Install Cron RUN apt-get update RUN apt-get -y install cron # Run the command on container startup CMD cron && tail -f /var/log/cron.logcrontab:
* * * * * root echo "Hello world" >> /var/log/cron.log 2>&1 # Don't remove the empty line at the end of this file. It is required to run the cron jobNo funcionó en mi máquina (Windows 10). Aparentemente, parece haber un problema específico de Windows también informado por otra persona: https://github.com/Ekito/docker-cron/issues/3
Para probar si solo yo estaba haciendo algo mal, traté de hacer lo mismo en una máquina virtual que ejecuta ubuntu (por lo tanto, un host de ubuntu en lugar de mi host de Windows) y funcionó como se esperaba. El archivo de registro se amplía como se esperaba.
Entonces, ¿qué puedo hacer para intentar que esto funcione?
Intenté escribir en una carpeta montada (enlazar) y crear un volumen para escribir. Ninguno funcionó.
La respuesta de rferalli sobre el problema de github me funcionó:
"Tuve el mismo problema. Se solucionó cambiando el final de línea del archivo crontab de CRLF a LF. ¡Espero que esto ayude!"
Tengo este problema también. Mi solución es usar el Programador de tareas para ejecutar un archivo .bat que inicie un contenedor en su lugar
Uso del Programador de tareas : https://active-directory-wp.com/docs/Usage/How_to_add_a_cron_job_on_Windows.html
hola.murciélago
docker run hello-worldAcción del programador de tareas
cmd /c hello.bat >> hello.log 2>&1Espero que esto ayude :)