From 3700d581b3037c5a33f6dca628314b9a6cb19bed Mon Sep 17 00:00:00 2001 From: DoTheEvolution Date: Sun, 10 Jan 2021 21:59:37 +0100 Subject: [PATCH] update --- ofelia/readme.md | 169 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 ofelia/readme.md diff --git a/ofelia/readme.md b/ofelia/readme.md new file mode 100644 index 0000000..dae2e01 --- /dev/null +++ b/ofelia/readme.md @@ -0,0 +1,169 @@ +# Ofelia in docker + +###### guide-by-example + +# Purpose + +Scheduling jobs that will be run in docker containers. + +* [Github](https://github.com/mcuadros/ofelia) +* [DockerHub image used](https://hub.docker.com/r/mcuadros/ofelia/) + +Ofelia is a simple scheduler for docker containers, replacing cron.
+Written in go, its binary is running in the background as a daemon, +executing scheduled tasks as set in a simple config file. + + +# Files and directory structure + +``` +/home/ +└── ~/ + └── docker/ + └── ofelia/ + ├── docker-compose.yml + └── config.ini +``` + +* `docker-compose.yml` - a docker compose file, telling docker how to run the container +* `config.ini` - ofelia's configuration file bind mounted in to the container + +All files need to be provided. + +# docker-compose + +`docker-compose.yml` +```yml +version: "3" +services: + + ofelia: + image: mcuadros/ofelia + container_name: ofelia + hostname: ofelia + restart: unless-stopped + volumes: + - ./config.ini:/etc/ofelia/config.ini:ro + - /var/run/docker.sock:/var/run/docker.sock:ro +``` + +# Config + +config.ini contains scheduled jobs.
+There are several [types](https://github.com/mcuadros/ofelia/blob/master/docs/jobs.md), +but here is just the basic most common use: *job-exec*
+which executes command inside an already running container. + +`config.ini` +```ini +[job-exec "test1"] +schedule = @every 5m +container = phpipam_phpipam-web_1 +command = touch /tmp/bla + +[job-exec "test2"] +schedule = @every 1h +container = phpipam_phpipam-mariadb_1 +command = touch /tmp/bla + +[job-exec "test3"] +schedule = @every 1h30m10s +container = phpipam_phpipam-cron_1 +command = touch /tmp/bla +``` + +# Logging + +![logo](https://i.imgur.com/5SgWE0I.png) + +Docker containers log shows which jobs are active and when they were executed. + +But Ofelia has several build in +[logging options.](https://github.com/mcuadros/ofelia#logging) + +#### email + +Unfortunetly seems `[global]` section, where email settings would be set once +and then enabled per job is not working. +So either the settings would go +in to `[global]` and be set for every single job, or every job that requires +email logging will have to have all the email settings writen out in full. + +`config.ini` +```ini +[job-exec "test1"] +schedule = @every 5m +container = phpipam_phpipam-web_1 +command = touch /tmp/zla +smtp-user = apikey +smtp-password = SG.*************************** +smtp-host = smtp.sendgrid.net +smtp-port = 465 +mail-only-on-error = false +email-to = whoever@example.com +email-from = test@example.com + +[job-exec "test2"] +schedule = @every 2m +container = phpipam_phpipam-mariadb_1 +command = touch /tmp/zla + +``` + +#### save-folder + +Saves result of every job execution in to a file. + +By defining `save-folder` path for the job.
+The path used should be bind mounted from the host, +for persistence of the data and easier access. + +`docker-compose.yml` +```yml +version: "3" +services: + + ofelia: + image: mcuadros/ofelia + container_name: ofelia + hostname: ofelia + restart: unless-stopped + volumes: + - ./config.ini:/etc/ofelia/config.ini:ro + - /var/run/docker.sock:/var/run/docker.sock:ro + - ./logs:/tmp/logs +``` + +`config.ini` +```ini +[job-exec "test1"] +schedule = @every 5m +container = nginx +command = touch /tmp/example +save-folder = /tmp/logs +``` + +# Update + +[Watchtower](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/watchtower) +updates the image automatically. + +Manual image update: + +- `docker-compose pull`
+- `docker-compose up -d`
+- `docker image prune` + +# Backup and restore + +#### Backup + +Using [borg](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/borg_backup) +that makes daily snapshot of the entire directory. + +#### Restore + +* down the homer container `docker-compose down`
+* delete the entire homer directory
+* from the backup copy back the homer directory
+* start the container `docker-compose up -d`