32 Commits

Author SHA1 Message Date
2706c094d6 expose log dir to /config volume
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-28 10:57:22 +00:00
ada0034f7f add cronicle info to readme [CI SKIP] 2023-05-28 10:16:53 +00:00
fa39f8b7d4 add LOG_LEVEL env var
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-28 10:05:35 +00:00
1920c68eba update readme [CI SKIP] 2023-05-28 08:59:04 +00:00
d293cbaef9 add nano, change editor to it 2023-05-28 08:43:01 +00:00
6ac07ec9a0 cleanup misc files in app dir
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-27 22:05:58 +00:00
ab73132553 set permissions to 1000 at build
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-27 21:58:31 +00:00
76cdb2640e fix to defined cronicle version 2023-05-27 21:53:40 +00:00
f1f322d58a rename user to cronicle 2023-05-27 18:46:23 +00:00
bfbc0e22d7 fix not hooking conf in if already setup
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-27 18:15:12 +00:00
f3dc829111 get correct s6 for architecture
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-27 17:49:19 +00:00
9c3caf751e Merge pull request '1.0.0' (#1) from develop into main
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
Reviewed-on: #1
2023-05-27 16:53:07 +00:00
1ac78908ad tweak build behaviour [CI SKIP] 2023-05-27 16:49:13 +00:00
f990871798 updated readme [CI SKIP] 2023-05-27 16:46:47 +00:00
2ecac58414 add .gitignore [CI SKIP] 2023-05-27 15:37:58 +00:00
613393f328 redesign around s6-overlay
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-27 13:43:46 +00:00
30026b4e17 update readme [CI SKIP] 2023-05-27 13:42:38 +00:00
580845afe0 add goreleaser [CI SKIP] 2023-05-27 13:40:53 +00:00
d4aa8ff410 update drone behaviour [CI SKIP] 2023-05-27 13:40:44 +00:00
b3436f3b2c create cronicle user at build
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-29 23:49:45 +00:00
4541df4c8a Merge branch 'main' of https://git.mrmeeb.stream/MrMeeb/cronicle-docker
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-29 20:36:16 +00:00
26c3a15c81 logic fixes 2022-12-29 20:36:15 +00:00
e10acf4e46 Update '.drone.yml'
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-29 19:41:42 +00:00
2d8fb52b23 Update '.drone.yml'
Some checks failed
continuous-integration/drone/push Build is failing
2022-12-29 19:03:26 +00:00
511704a90f drone notify on failure
Some checks reported errors
continuous-integration/drone/push Build was killed
2022-12-29 17:51:38 +00:00
70d6215ca3 Add logic to detect if config is missing as worker
Some checks failed
continuous-integration/drone/push Build is failing
2022-12-29 17:46:57 +00:00
d759db2bb0 Update '.drone.yml'
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-27 11:48:39 +00:00
c04d6febad Merge branch 'main' of https://git.mrmeeb.stream/MrMeeb/cronicle-docker
Some checks reported errors
continuous-integration/drone/push Build was killed
2022-12-27 11:44:58 +00:00
cad9b48ab9 add drone, add logic for init scripts 2022-12-27 11:44:51 +00:00
327208391b Update 'README.md' 2022-12-26 22:31:41 +00:00
ee7034cba3 more dev 2022-12-26 22:30:42 +00:00
78f681fb41 first commit 2022-12-26 18:21:10 +00:00
5 changed files with 60 additions and 8 deletions

View File

@ -15,14 +15,15 @@ ARG CRONICLE_EDGE_VERSION=1.6.2
ENV CRONICLE_foreground=1 ENV CRONICLE_foreground=1
ENV CRONICLE_echo=1 ENV CRONICLE_echo=1
ENV CRONICLE_color=1 ENV CRONICLE_color=1
ENV EDITOR=vi ENV EDITOR=nano
ENV MODE=manager ENV MODE=manager
ENV PUID=1000 ENV PUID=1000
ENV PGID=1000 ENV PGID=1000
ENV TZ=UTC ENV TZ=UTC
ENV LOG_LEVEL=9
#Get required packages #Get required packages
RUN apk update && apk add tzdata curl shadow bash xz git procps nodejs npm RUN apk update && apk add tzdata curl shadow bash xz git procps nodejs npm nano
#Make folders #Make folders
RUN mkdir /config && \ RUN mkdir /config && \

View File

@ -1,10 +1,41 @@
# Cronicle Docker # Cronicle Docker
![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/main?label=main&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge) ![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/develop?label=develop&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge) ![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/main?label=latest&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge) ![Drone (self-hosted) with branch](https://img.shields.io/drone/build/MrMeeb/cronicle-docker/develop?label=develop&server=https%3A%2F%2Fdrone.mrmeeb.stream&style=for-the-badge)
Dockerised Cronicle, based on the [Cronicle-Edge](https://github.com/cronicle-edge/cronicle-edge) fork. Dockerised Cronicle, based on the [Cronicle-Edge](https://github.com/cronicle-edge/cronicle-edge) fork of [Cronicle](https://github.com/jhuckaby/Cronicle). This container was built to include features I value in containers, namely logging to `stdout` and configurable `PUID` and `PGID`.
Can function in both the **manager** and **worker** role. This container can function in both the **manager** and **worker** role.
## Links
- :tea: [Gitea Repo (source)](https://git.mrmeeb.stream/MrMeeb/cronicle-docker)
- :whale2: [Containers](https://git.mrmeeb.stream/MrMeeb/-/packages/container/cronicle/latest) - since I'm currently not also publishing them to ghcr.io
- :mirror: [GitHub mirror](https://github.com/MrMeeb/cronicle-docker)
- :package: [Cronicle Repo](https://github.com/jhuckaby/Cronicle)
- :package: [Cronicle-Edge Repo](https://github.com/cronicle-edge/cronicle-edge)
*This repo is mirrored to GitHub*
## Overview
[**Cronicle**](https://github.com/jhuckaby/Cronicle) is a multi-server task scheduler and runner, with a web based front-end UI. It handles both scheduled, repeating and on-demand jobs, targeting any number of worker servers, with real-time stats and live log viewer. It's basically a fancy [Cron](https://en.wikipedia.org/wiki/Cron) replacement written in [Node.js](https://nodejs.org/). You can give it simple shell commands, or write Plugins in virtually any language.
![Main Screenshot](https://pixlcore.com/software/cronicle/screenshots-new/job-details-complete.png)
## Features at a Glance
* Single or multi-server setup.
* Automated failover to backup servers.
* Auto-discovery of nearby servers.
* Real-time job status with live log viewer.
* Plugins can be written in any language.
* Schedule events in multiple timezones.
* Optionally queue up long-running events.
* Track CPU and memory usage for each job.
* Historical stats with performance graphs.
* Simple JSON messaging system for Plugins.
* Web hooks for external notification systems.
* Simple REST API for scheduling and running events.
* API Keys for authenticating remote apps.
## Tags ## Tags
@ -19,9 +50,9 @@ Tags relating to releases are also available, for locking in on a specific versi
`config.json`, located in `/config/cronicle/conf/config.json`, is automatically generated on the first run of Cronicle in 'manager' mode. This file must be kept identical between the manager and any workers it controls. `config.json`, located in `/config/cronicle/conf/config.json`, is automatically generated on the first run of Cronicle in 'manager' mode. This file must be kept identical between the manager and any workers it controls.
If you want to configure Cronicle before first run (e.g to use a different storage engine), download `config_sample.json` and adjust accordingly before placing in `/config/cronicle/conf/config.json`. If you want to configure Cronicle before first run (e.g to use a different storage engine), download `config_sample.json` and adjust accordingly before placing in `/config/cronicle/conf/config.json`. Make sure to change the `secret`!
:exclamation: NOTE: You must define the hostname of the container. Cronicle expects the hostname to remain the same, so the randomly-generated container hostname can cause problems if it changes. :exclamation: :exclamation: You must define the hostname of the container. Cronicle expects the hostname to remain the same, so the randomly-generated container hostname can cause problems if it changes. :exclamation:
### Docker CLI ### Docker CLI
``` ```
@ -80,3 +111,4 @@ This container automatically checks for scripts in `/config/init` and runs them
|PUID |int |1000 |Sets the UID of the user Cronicle runs under |PUID |int |1000 |Sets the UID of the user Cronicle runs under
|PGID |int |1000 |Sets the GID of the user Cronicle runs under |PGID |int |1000 |Sets the GID of the user Cronicle runs under
|TZ |[List of valid TZs](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) |UTC |Sets the timezone of the container and by extension Cronicle |TZ |[List of valid TZs](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List) |UTC |Sets the timezone of the container and by extension Cronicle
|LOG_LEVEL|1-10 |9 |Sets log level from `1` (quietest) to `10` (loudest)|

View File

@ -21,6 +21,7 @@ PUID=${PUID}
PGID=${PGID} PGID=${PGID}
TZ=${TZ} TZ=${TZ}
MODE=${MODE} MODE=${MODE}
LOG_LEVEL=${LOG_LEVEL}
---------------------------------------------------------------------- ----------------------------------------------------------------------
" "

View File

@ -104,3 +104,21 @@ else
echo "'$MODE' is not a recognised appion for the MODE environment variable. Accepted appions are 'manager' and 'worker'." echo "'$MODE' is not a recognised appion for the MODE environment variable. Accepted appions are 'manager' and 'worker'."
fi fi
#Expose log directory
if [ ! -d /config/cronicle/logs ]
then
echo "Logs dir is missing, creating."
cp -r /app/cronicle/logs /config/cronicle/logs
rm -rf /app/cronicle/logs
ln -s /config/cronicle/logs /app/cronicle/logs
else
echo "Logs dir already exists. Doesn't need creating."
echo "Linking persistent logs dir back into Cronicle."
rm -rf /app/cronicle/logs
ln -s /config/cronicle/logs /app/cronicle/logs
fi

View File

@ -1,3 +1,3 @@
#!/command/with-contenv bash #!/command/with-contenv bash
# shellcheck shell=bash # shellcheck shell=bash
exec s6-setuidgid cronicle node /app/cronicle/lib/main.js --color 1 exec s6-setuidgid cronicle node /app/cronicle/lib/main.js --debug_level ${LOG_LEVEL} --color ${CRONICLE_color}