Cron jobs can be used to run, and automate scheduled tasks. On Aptible, users can run cron jobs with the use of an individual app or with a service associated with an app, defined in the app’s procfile.

Supercronic is an open-source tool created by Aptible that avoids common issues with cron job implementation in containerized platforms.

This guide is designed to walk you through getting started with cron jobs on Aptible with the use of Supercronic.

Getting Started

Step 1: Install Supercronic in your Docker image.

Step 2: Add a crontab to your repository. Here is an example crontab you might want to adapt or reuse:

# Run every minute
*/1 * * * * bundle exec rake some:task

# Run once every hour
@hourly curl -sf example.com >/dev/null && echo 'got example.com!'

📘 For a complete crontab reference, review the documentation from the library Supercronic uses to parse crontabs, cronexpr.

📘 Unless you’ve specified otherwise with the TZ environment variable, the schedule for your crontab will be interpreted in UTC.

Step 3: Copy the crontab to your Docker image with a directive such as this one:

ADD crontab /app/crontab

📘 The example above grabs a file named crontab found at the root of your repository and copies it under /app in your image. Adjust as needed.

Step 4: Add a new service (if your app already has a Procfile), or deploy a new app altogether to start Supercronic and run your cron jobs. If you are adding a service, use this Procfile declaration:

cron: exec /usr/local/bin/supercronic /app/crontab

If you are adding a new app, you can use the same Procfile declaration or add a CMD declaration to your Dockerfile:

CMD ["supercronic", "/app/crontab"]