From 59e8b311f87155a3c5dc08ad9241e02bc2222b79 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sun, 4 May 2025 23:22:11 -0600 Subject: [PATCH] docs: add Schedule Jobs feature documentation and update comparison table --- apps/docs/content/docs/core/comparison.mdx | 4 +- apps/docs/content/docs/core/meta.json | 1 + apps/docs/content/docs/core/schedule-jobs.mdx | 80 +++++++++++++++++++ 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 apps/docs/content/docs/core/schedule-jobs.mdx diff --git a/apps/docs/content/docs/core/comparison.mdx b/apps/docs/content/docs/core/comparison.mdx index f721227..7a3b2ad 100644 --- a/apps/docs/content/docs/core/comparison.mdx +++ b/apps/docs/content/docs/core/comparison.mdx @@ -26,8 +26,8 @@ Comparison of the following deployment tools: | **Multi Server Support** | ✅ | ❌ | ❌ | ✅ | | **Open Source Templates** | ✅ | ✅ | ❌ | ✅ | | **Shared Enviroment Variables** | ✅ | ❌ | ❌ | ✅ | -| **Schedules Jobs** | ❌ | ❌ | ❌ | ✅ | +| **Schedules Jobs** | ✅ | ❌ | ❌ | ✅ | | **Cloudflare Tunnels** | ❌ | ❌ | ❌ | ✅ | | **Preview Deployments** | ✅ | ❌ | ❌ | ✅ | -| **Teams** | ❌ | ❌ | ❌ | ✅ | +| **Teams** | ✅ | ❌ | ❌ | ✅ | | **Cloud/Paid Version** | ✅ | ✅ | ✅ | ✅ | diff --git a/apps/docs/content/docs/core/meta.json b/apps/docs/content/docs/core/meta.json index 7c76e85..84a3a83 100644 --- a/apps/docs/content/docs/core/meta.json +++ b/apps/docs/content/docs/core/meta.json @@ -36,6 +36,7 @@ "templates", "(examples)", "auto-deploy", + "schedule-jobs", "providers", "watch-paths", "---Advanced---", diff --git a/apps/docs/content/docs/core/schedule-jobs.mdx b/apps/docs/content/docs/core/schedule-jobs.mdx new file mode 100644 index 0000000..0d42d39 --- /dev/null +++ b/apps/docs/content/docs/core/schedule-jobs.mdx @@ -0,0 +1,80 @@ +--- +title: "Schedule Jobs" +description: "Learn how to automate tasks using Dokploy's Schedule Jobs feature" +--- + + +Schedule Jobs in Dokploy allows you to create and manage automated tasks that run on a specified schedule using cron expressions. Each job execution creates a log entry where you can monitor the output and execution status. + +## Job Types + +Dokploy supports four types of scheduled jobs: + +1. **Application Jobs**: Run commands inside specific application containers +2. **Compose Jobs**: Execute commands in Docker Compose services +3. **Server Jobs**: Run scripts on remote servers +4. **Dokploy Server Jobs**: Execute tasks on the Dokploy server itself + +## Container-based Jobs (Application and Compose) + +For application and compose jobs, you can run single commands that will be executed inside the target container. Dokploy internally uses Docker exec to run these commands: + +```bash +docker exec -it +``` + +### Example +Assuming you with a nginx container and you want to check the nginx version in a container: +1. Create a new schedule job +2. Set the command to: `nginx -v` +3. Configure your desired schedule using cron syntax +4. Save and monitor the execution logs + + +The target container must be running for the job to execute successfully. + + + +For docker compose jobs, is required to not change the COMPOSE_PROJECT_NAME environment variable, since this is used to identify the project. + + +## Server-based Jobs (Server and Dokploy Server) + +For remote servers and the Dokploy server, you can write bash scripts to perform various tasks. These scripts can use any command or tool available on the target system. + + +Make sure any required dependencies are installed on the target server before using them in your scripts. + + +### Example 1: Automatic Docker Cleanup +This script cleans up unused Docker containers. You could schedule it to run every 15 minutes using the cron expression `*/15 * * * *`: + +```bash +#!/bin/bash +docker system prune --force +``` + +### Example 2: Custom Database Backup +You can create scripts to backup databases that aren't natively supported by Dokploy. Here's an example structure for a custom backup script: + +```bash +#!/bin/bash +# Backup script for custom database +backup_date=$(date +%Y%m%d_%H%M%S) +backup_file="database_${backup_date}.backup" + +# search the container name +container_name=$(docker ps --filter "name=clickhouse" --format "{{.Names}}") + +# Add your backup commands here +docker exec -it $container_name clickhouse-client --query "BACKUP DATABASE mydb TO '/backups/$backup_file'" + +# Upload to S3 (if needed) +# aws s3 cp /backups/$backup_file s3://your-bucket/backups/ +``` + +## Best Practices + +1. Always test your commands or scripts manually before scheduling them +2. Use appropriate error handling in your scripts +3. Consider the impact of scheduled jobs on system resources