Usage

Configuration Example 1 (Global Mode)

GitHub-logo.png logo (1).png Swarm-Cronjob.png

Before starting, you must have a swarm-cronjob instance up and running using docker.

Docker System Prune - Global Mode

This guide will help you set up a global Docker system prune task using Swarm Cronjob. This task will run on every node in your Docker Swarm cluster to remove unused data daily at 01:00 AM.

Step 1: Create a Docker Compose YAML

Create a Docker Compose file to define the system prune task. (You could also use the same Docker-Compose.yaml as in the BaseInstance)

version: "3.2"

services:
  prune-nodes:
    image: docker
    command: ["docker", "system", "prune", "-f"]
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      mode: global
      labels:
        - "swarm.cronjob.enable=true"
        - "swarm.cronjob.schedule=0 0 1 * * *"
        - "swarm.cronjob.skip-running=false"
      restart_policy:
        condition: none

Explanation of Configuration:

Add Docker labels to tell swarm-cronjob that your service is a cronjob.

Step 2: Deploy the Stack

Deploy the global stack to your Docker Swarm cluster:

docker stack deploy -c prune-nodes.yml prune-nodes

Once deployed, the Docker system prune task will execute on every node in the swarm at the scheduled time.

Configuration Example 2 (Replicated Mode)

GitHub-logo.png logo (1).png Swarm-Cronjob.png

 

 

 

 

Running a Custom Cronjob with Swarm Cronjob

This guide demonstrates how to set up a cronjob using Swarm Cronjob. The example focuses on running a task periodically based on a defined schedule.

Prerequisites

Step 1: Create a Docker Compose YAML

Create a Docker Compose file to define the cronjob:

version: "3.2"

services:
  test:
    image: busybox
    command: date
    deploy:
      mode: replicated
      replicas: 0
      labels:
        - "swarm.cronjob.enable=true"
        - "swarm.cronjob.schedule=* * * * *"
        - "swarm.cronjob.skip-running=false"
      restart_policy:
        condition: none

Step 2: Deploy the Stack

Deploy the stack to your Docker Swarm cluster:

docker stack deploy -c test.yml test

Explanation of Configuration

Logs

Check the logs to verify task execution:

docker service logs swarm_cronjob_app

Example Logs:

swarm_cronjob_app.1.nvsjbhdhiagl@default    | Thu, 13 Dec 2018 20:04:37 UTC INF Starting swarm-cronjob v1.2.0
swarm_cronjob_app.1.nvsjbhdhiagl@default    | Thu, 13 Dec 2018 20:04:37 UTC INF Add cronjob with schedule * * * * * service=test
swarm_cronjob_app.1.nvsjbhdhiagl@default    | Thu, 13 Dec 2018 20:05:00 UTC INF Start job last_status=n/a service=test
swarm_cronjob_app.1.nvsjbhdhiagl@default    | Thu, 13 Dec 2018 20:06:00 UTC INF Start job last_status=n/a service=test
swarm_cronjob_app.1.nvsjbhdhiagl@default    | Thu, 13 Dec 2018 20:07:00 UTC INF Start job last_status=n/a service=test
swarm_cronjob_app.1.nvsjbhdhiagl@default    | Thu, 13 Dec 2018 20:08:00 UTC INF Start job last_status=n/a service=test

Once deployed, the cronjob will execute the defined task at the specified schedule.