Sign inSign up

zachbg/docker-cron

By zachbg

•Updated 6 months ago

Container-aware cron scheduler with supercronic for Docker environments

Image
1

1.8K

zachbg/docker-cron repository overview

⁠docker-cron

Universal cron scheduler for Docker — run any command on a schedule.

Docker Image Docker Pulls

⁠Why?

Docker doesn't have cron. Every deployment needs scheduled tasks. This image:

  • Just works — no config files needed, use environment variables
  • Docker-aware — includes docker CLI for container management tasks
  • Multiple jobs — via env vars, files, or arguments
  • Timezone support — set TZ and schedules follow local time
  • Proper logging — stdout/stderr, not syslog
  • Tiny — Alpine-based, ~15MB

⁠Quick Start

⁠One-liner
docker run -d \
  -e CRON_SCHEDULE="*/5 * * * *" \
  -e CRON_COMMAND="echo hello" \
  zachbg/docker-cron
⁠Multiple Jobs
docker run -d \
  -e CRON_JOB_1="*/5 * * * * curl -sf https://myapp.com/health" \
  -e CRON_JOB_2="0 3 * * * curl -X POST https://myapp.com/api/cleanup" \
  -e CRON_JOB_3="0 * * * * echo hourly task" \
  zachbg/docker-cron

⁠Docker Compose

services:
  cron:
    image: zachbg/docker-cron
    restart: unless-stopped
    environment:
      - TZ=America/New_York
      - CRON_JOB_BACKUP=0 3 * * * curl -sf http://backup:8080/run
      - CRON_JOB_CLEANUP=0 */6 * * * curl -X POST http://app:3000/api/cleanup
      - CRON_JOB_HEALTH=*/5 * * * * curl -sf https://hc.example.com/ping/xxx
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # Optional: for Docker commands
⁠Docker Container Management
services:
  cron:
    image: zachbg/docker-cron
    restart: unless-stopped
    environment:
      - CRON_JOB_RESTART=0 4 * * * docker restart myapp
      - CRON_JOB_PRUNE=0 2 * * 0 docker system prune -af
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
⁠Mounted Crontab File
services:
  cron:
    image: zachbg/docker-cron
    volumes:
      - ./crontab:/etc/cron.d/jobs

⁠Configuration Methods

MethodExample
Env varsCRON_JOB_1="* * * * * echo hi"
Schedule + CommandCRON_SCHEDULE="* * * * *" + CRON_COMMAND="echo hi"
Mount file-v ./crontab:/etc/cron.d/jobs
Argumentsdocker run zachbg/docker-cron "* * * * * echo hi"

⁠Environment Variables

VariableDefaultDescription
CRON_JOB_*Cron jobs (name is for your reference)
CRON_SCHEDULESchedule for single-job mode
CRON_COMMANDCommand for single-job mode
TZUTCTimezone for schedules

⁠License

MIT

Tag summary

Content type

Image

Digest

sha256:20d7bf01d…

Size

20.7 MB

Last updated

6 months ago

docker pull zachbg/docker-cron