DEV Community

Cover image for Schedule Script Execution in a Node.js Docker Image with Cron
Lukas Hermann
Lukas Hermann

Posted on • Originally published at lukashermann.dev

3 3

Schedule Script Execution in a Node.js Docker Image with Cron

Cron is a popular tool to schedule tasks, it comes pre-installed on almost any Linux image such as Debian or Ubuntu. Cron can execute any command at a predefined time like 4:30 AM or every 2 minutes. For this reason, it is the first choice of developers for scheduled script execution.

A docker image is nothing else than a stripped-down Linux operating system and comes with cron. Most answers on StackOverflow suggest installing extra packages or building a custom image, but neither approach is necessary. The vanilla Node.js Docker image has everything needed to schedule the execution of javascript files.

Example with Code

I want to run a javascript file every 30 minutes inside my docker image. I want to use docker-compose1 to start and stop the docker container.

Here's my docker compose file:

version: "3.1"

services:
  price-daemon:
    image: node:14-alpine
    working_dir: /home/node/app
    volumes:
      - ./:/home/node/app
    command: "/usr/sbin/crond -f -l 0 -c /home/node/app/crontab -L /var/log/cron.log"
Enter fullscreen mode Exit fullscreen mode

I use the lightweight node:14-alpine2 image and mount my current working directory as volume.

The command starts the cron daemon and it will look for the file /home/node/app/crontab/root. Remove -l 0 if you don't like a super verbose log. In my working directory I created the file crontab/root with this contents:

# min hour day month weekday command
* * * * * /bin/date --rfc-2822 >> /var/log/cron.log
*/30 * * * * node /home/node/app/scheduled.js >> /var/log/cron.log 2>&1
Enter fullscreen mode Exit fullscreen mode

The second line is just a timestamp printed into the log file for debugging purposes. The third line executes the scheduled.js file and logs its output into /var/log/cron.log

And that's it. Pretty simple right?


  1. https://docs.docker.com/compose/ 

  2. https://hub.docker.com/_/node 

SurveyJS custom survey software

Build Your Own Forms without Manual Coding

SurveyJS UI libraries let you build a JSON-based form management system that integrates with any backend, giving you full control over your data with no user limits. Includes support for custom question types, skip logic, an integrated CSS editor, PDF export, real-time analytics, and more.

Learn more

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay