Sign inSign up

funnyzak/cron

By funnyzak

Updated over 1 year ago

a lightweight service that runs in the background and executes scheduled tasks.

Image
0

3.1K

funnyzak/cron repository overview

Cron

Docker Tags Image Size Docker Stars Docker Pulls

cron is a lightweight service that runs in the background and executes scheduled tasks. It builds on the official alpine image and includes dcron as the cron service. The image is available for multiple architectures, including linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64/v8, linux/ppc64le, linux/riscv64, linux/s390x.

Installed packages: dcron, ca-certificates, curl, tar, tzdata, bash, zip, unzip, rsync.

Pull the Image

# Docker Hub
docker pull funnyzak/cron:latest
# GitHub Container Registry
docker pull ghcr.io/funnyzak/cron:latest
# Aliyun Registry
docker pull registry.cn-beijing.aliyuncs.com/funnyzak/cron:latest

How to Use

Environment Variables
  • CRON_STRINGS: Crontab strings, separated by \n.
  • STARTUP_COMMANDS: Commands to run before starting the cron service.
  • EXTRA_PACKAGES: Optional, Specify extra packages to install. Default is empty. e.g. mysql-client mariadb-connector-c.

CRON_STRINGS example:

Single job:

# Run every minute
* * * * * /scripts/echo.sh >> /var/log/cron/cron.log 2>&1

Multiple jobs:

# Multiple jobs
* * * * * /scripts/request.sh >> /var/log/cron/cron.log 2>&1\n* * * * * /scripts/echo.sh >> /var/log/cron/cron.log 2>&1
Crontab Files

crontab files are located in /etc/cron.d, you can mount a volume to this directory to add your own crontab files.

For example, you can create a file named my-cron with the following content:

* * * * * /scripts/request.sh >> /var/log/cron/cron.log 2>&1

Note: Default log file should be /var/log/cron/cron.log. You should forward all script output to this file.

Usage

Using CRON_STRINGS
docker run --name="cron" -d \
  -e 'CRON_STRINGS=* * * * * echo "Hi, i am cron." >> /var/log/cron/cron.log 2>&1' \
  funnyzak/cron

docker run --name="cron1" -d \
  -e 'CRON_STRINGS=* * * * * /scripts/echo.sh >> /var/log/cron/cron.log 2>&1' \
  funnyzak/cron

docker run --name="cron2" -d \
  -e 'CRON_STRINGS=* * * * * /scripts/echo.sh >> /var/log/cron/cron.log 2>&1' \
  -e 'STARTUP_COMMANDS=echo "Hello, World!"' \
  -e 'EXTRA_PACKAGES=git' \
  funnyzak/cron

docker run --name="cron5" -d \
  -e 'CRON_STRINGS=* * * * * /scripts/request.sh >> /var/log/cron/cron.log 2>&1' \
  -e 'STARTUP_COMMANDS=/scripts/echo.sh >> /var/log/cron/cron.log 2>&1' \
  funnyzak/cron
Using Crontab Files
docker run --name="cron6" -d \
  -v ./cron/crontabs:/etc/cron.d \
  -v ./cron/scripts:/scripts \
  funnyzak/cron
Compose Example
version: '3'
services:
  cron:
    image: funnyzak/cron
    privileged: true
    container_name: cron
    environment:
      - TZ=Asia/Shanghai
      - LANG=C.UTF-8
      - CRON_TAIL=1
      - CRON_STRINGS=* * * * * /scripts/echo.sh >> /var/log/cron/cron.log 2>&1
    restart: on-failure
    volumes:
      - ./cron/scripts:/scripts
      - ./cron/crontabs:/etc/cron.d

Tag summary

Content type

Image

Digest

sha256:0f893fd0e

Size

8 MB

Last updated

over 1 year ago

docker pull funnyzak/cron