Scheduling Tasks
On Aptible, cron jobs are typically run as another service associated with your app, defined in your App's Procfile, or running as a separate App altogether.
To run cron jobs on Aptible (or any containerized environment), we recommend using Supercronic, a cron implementation we created specifically to be used with containers.
Here's how you'd get started running cron jobs for your app with Supercronic.
Add Supercronic
Install Supercronic in your Docker image.
Write a crontab
crontab
First, 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!'
Note
For a complete crontab reference, review the documentation from the library Supercronic uses to parse crontabs, cronexpr.
Tip
Unless you've specified otherwise with the
TZ
environment variable the schedule for your crontab will be interpeted in UTC.
Copy the crontab
to your Docker image
crontab
to your Docker imageThen, make sure the crontab
copied in your Docker image, with a directive such as this one:
ADD crontab /app/crontab
Note
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.
Add a new Service or App running Supercronic
Finally, 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 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"]
Updated about 1 year ago