Compare commits

...

35 Commits
1.0.1 ... main

Author SHA1 Message Date
a515ba8eed Merge pull request '1.0.5' (#11) from develop into main
Reviewed-on: #11
2024-05-05 17:15:49 +00:00
08c76e9509 Merge branch 'main' into develop 2024-05-05 17:11:35 +00:00
57e2cce893 Ignore outcome of chown /app & /config 2024-05-05 16:27:40 +00:00
ab7dc07dea Merge pull request '1.0.4' (#8) from develop into main
Reviewed-on: #8
2023-08-02 11:45:34 +00:00
90aaf388cb tweak worker first run config logic 2023-07-21 10:50:30 +00:00
8803076ab5 better permission detection 2023-07-21 10:50:05 +00:00
bc5c00e1da fix init folder permissions on creation 2023-07-21 10:44:01 +00:00
126746669a fix not running multiple scripts in /config/init 2023-07-21 10:11:17 +00:00
3069d5c7f9 fix /config/init permissions 2023-07-20 11:39:23 +00:00
ec1a1d9383 remove init scripts from cronicle-prepare.sh 2023-07-16 16:56:46 +00:00
156e0afe5c run init scripts as root 2023-07-16 16:55:34 +00:00
24c9e13e72 remove sample config keys 2023-07-08 19:29:04 +00:00
1f21d711ca add ca-certificates package 2023-07-08 16:29:40 +00:00
a5bb818120 change linking of config in worker mode 2023-07-08 16:12:13 +00:00
b2a8147027 tidy up more files 2023-07-08 16:11:55 +00:00
76f6812a7d add ssl compatibility 2023-07-03 22:46:41 +00:00
bcbdf2ee76 Merge pull request 'add reverse-proxy details' (#7) from develop into main [CI SKIP]
Reviewed-on: #7
2023-06-26 20:12:28 +00:00
21aafd4ee5 add reverse-proxy details [CI SKIP] 2023-06-26 20:11:19 +00:00
06c1bba849 Merge pull request 'update to cronicle-edge 1.6.3' (#6) from develop into main
Reviewed-on: #6
2023-06-25 13:33:44 +00:00
79db8733c5 add period to cronicle-edge version 2023-06-25 13:28:58 +00:00
882f1faa37 update to cronicle-edge 1.6.3 2023-06-25 13:25:25 +00:00
0b89350609 add new pipeline for better building [CI SKIP] 2023-06-05 21:52:50 +00:00
3c122e9f0b Merge pull request 'typo correction on readme [CI SKIP]' (#5) from develop into main [CI SKIP]
Reviewed-on: #5
2023-06-05 21:19:16 +00:00
dc6dbf5b64 typo correction on readme [CI SKIP] 2023-06-05 21:18:31 +00:00
cef257c56a Merge pull request 'fix drone release build dependency graph' (#4) from develop into main
Reviewed-on: #4
2023-06-05 21:09:47 +00:00
c31d8f79fa fix drone release build dependency graph 2023-06-05 21:04:42 +00:00
0cf6864d20 Merge pull request '1.0.2' (#3) from develop into main
Reviewed-on: #3
2023-06-05 20:50:04 +00:00
4270518bd5 update readme [CI SKIP] 2023-06-05 20:49:35 +00:00
208296bab2 fix drone dependency graph 2023-06-05 20:43:23 +00:00
2de4cd5da6 drone build and public to ghcr also 2023-06-05 20:43:23 +00:00
b7c5fee65f expose log dir to /config volume 2023-06-05 20:43:23 +00:00
3d9d4b4333 add cronicle info to readme [CI SKIP] 2023-06-05 20:43:23 +00:00
6fdfa75adb add LOG_LEVEL env var 2023-06-05 20:43:23 +00:00
92f41ce321 update readme [CI SKIP] 2023-06-05 20:43:23 +00:00
6342e0bf32 add nano, change editor to it 2023-06-05 20:43:23 +00:00
9 changed files with 319 additions and 77 deletions

View File

@ -1,12 +1,11 @@
kind: pipeline kind: pipeline
type: docker type: docker
name: build-main-images name: build-release-images
trigger: trigger:
event: event:
exclude: exclude:
- pull_request - pull_request
ref: ref:
- refs/heads/main
- refs/tags/** - refs/tags/**
platform: platform:
@ -19,29 +18,17 @@ steps:
image: docker:git image: docker:git
commands: commands:
- git fetch --tags - git fetch --tags
when: depends_on:
ref: - clone
- refs/tags/**
# Set tags for main branch
- name: make-tags - name: make-tags
image: node
commands:
- echo -n "${DRONE_COMMIT_SHA:0:8}, latest" > .tags
when:
ref:
- refs/heads/main
- name: make-tags-release
image: node image: node
commands: commands:
- echo -n "${DRONE_TAG}, latest" > .tags - echo -n "${DRONE_TAG}, latest" > .tags
when: depends_on:
ref: - get-tags
- refs/tags/**
# Build containers from main branch - name: build-gitea
- name: build
image: thegeeklab/drone-docker-buildx image: thegeeklab/drone-docker-buildx
privileged: true privileged: true
settings: settings:
@ -55,17 +42,45 @@ steps:
platforms: platforms:
- linux/arm64 - linux/arm64
- linux/amd64 - linux/amd64
depends_on:
- make-tags
- name: release - name: build-github
image: thegeeklab/drone-docker-buildx
privileged: true
settings:
provenance: false
registry: ghcr.io
username:
from_secret: docker_username
password:
from_secret: github_token
repo: ghcr.io/mrmeeb/cronicle
platforms:
- linux/arm64
- linux/amd64
depends_on:
- make-tags
- name: release-gitea
image: goreleaser/goreleaser image: goreleaser/goreleaser
environment: environment:
GITEA_TOKEN: GITEA_TOKEN:
from_secret: gitea_token from_secret: gitea_token
commands: commands:
- goreleaser release - goreleaser release -f .goreleaser-gitea.yaml
when: depends_on:
ref: - build-gitea
- refs/tags/**
- name: release-github
image: goreleaser/goreleaser
environment:
GITHUB_TOKEN:
from_secret: github_token
commands:
- goreleaser release -f .goreleaser-github.yaml
depends_on:
- build-github
- name: notify - name: notify
image: plugins/slack image: plugins/slack
@ -76,6 +91,83 @@ steps:
settings: settings:
webhook: webhook:
from_secret: slack_webhook from_secret: slack_webhook
depends_on:
- release-gitea
- release-github
---
kind: pipeline
type: docker
name: build-main-images
trigger:
event:
exclude:
- pull_request
ref:
- refs/heads/main
platform:
os: linux
arch: amd64
steps:
- name: make-tags
image: node
commands:
- echo -n "${DRONE_COMMIT_SHA:0:8}, latest" > .tags
when:
ref:
- refs/heads/main
depends_on:
- clone
- name: build-gitea
image: thegeeklab/drone-docker-buildx
privileged: true
settings:
provenance: false
registry: git.mrmeeb.stream
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: git.mrmeeb.stream/mrmeeb/cronicle
platforms:
- linux/arm64
- linux/amd64
depends_on:
- make-tags
- name: build-github
image: thegeeklab/drone-docker-buildx
privileged: true
settings:
provenance: false
registry: ghcr.io
username:
from_secret: docker_username
password:
from_secret: github_token
repo: ghcr.io/mrmeeb/cronicle
platforms:
- linux/arm64
- linux/amd64
depends_on:
- make-tags
- name: notify
image: plugins/slack
when:
status:
- success
- failure
settings:
webhook:
from_secret: slack_webhook
depends_on:
- build-github
- build-gitea
--- ---
kind: pipeline kind: pipeline
@ -100,7 +192,7 @@ steps:
- echo -n "develop-${DRONE_COMMIT_SHA:0:8}, develop" > .tags - echo -n "develop-${DRONE_COMMIT_SHA:0:8}, develop" > .tags
# Build containers from develop branch # Build containers from develop branch
- name: build - name: build-gitea
image: thegeeklab/drone-docker-buildx image: thegeeklab/drone-docker-buildx
privileged: true privileged: true
settings: settings:
@ -114,6 +206,25 @@ steps:
platforms: platforms:
- linux/arm64 - linux/arm64
- linux/amd64 - linux/amd64
depends_on:
- make-tags
- name: build-github
image: thegeeklab/drone-docker-buildx
privileged: true
settings:
provenance: false
registry: ghcr.io
username:
from_secret: docker_username
password:
from_secret: github_token
repo: ghcr.io/mrmeeb/cronicle
platforms:
- linux/arm64
- linux/amd64
depends_on:
- make-tags
- name: notify - name: notify
image: plugins/slack image: plugins/slack
@ -123,4 +234,7 @@ steps:
- failure - failure
settings: settings:
webhook: webhook:
from_secret: slack_webhook from_secret: slack_webhook
depends_on:
- build-gitea
- build-github

3
.gitignore vendored
View File

@ -1,2 +1,3 @@
dist/ dist-gitea/
dist-github/
.tags .tags

View File

@ -1,3 +1,5 @@
dist: dist-gitea
build: build:
skip: true skip: true

20
.goreleaser-github.yaml Normal file
View File

@ -0,0 +1,20 @@
dist: dist-github
build:
skip: true
archives:
- format: binary
release:
draft: true
github:
owner: MrMeeb
name: cronicle-docker
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'

View File

@ -10,19 +10,20 @@ ENV S6_OVERLAY_ARCH=aarch64
FROM base-${TARGETARCH}${TARGETVARIANT} FROM base-${TARGETARCH}${TARGETVARIANT}
ARG S6_OVERLAY_VERSION=3.1.5.0 ARG S6_OVERLAY_VERSION=3.1.5.0
ARG CRONICLE_EDGE_VERSION=1.6.2 ARG CRONICLE_EDGE_VERSION=.1.6.3
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 --no-cache tzdata curl shadow bash xz git procps nodejs npm nano openssl ca-certificates
#Make folders #Make folders
RUN mkdir /config && \ RUN mkdir /config && \
@ -38,13 +39,18 @@ RUN curl -fsSL "https://github.com/just-containers/s6-overlay/releases/download/
curl -fsSL "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz" | tar Jpxf - -C / curl -fsSL "https://github.com/just-containers/s6-overlay/releases/download/v${S6_OVERLAY_VERSION}/s6-overlay-symlinks-arch.tar.xz" | tar Jpxf - -C /
ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 S6_VERBOSITY=1 ENV S6_BEHAVIOUR_IF_STAGE2_FAILS=2 S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 S6_VERBOSITY=1
#Install Cronicle #Install Cronicle & tidy up things I don't want
RUN mkdir /app/cronicle && \ RUN apk add --no-cache --virtual .jq jq && \
mkdir /app/cronicle && \
cd /app/cronicle && \ cd /app/cronicle && \
wget https://github.com/cronicle-edge/cronicle-edge/archive/refs/tags/v${CRONICLE_EDGE_VERSION}.tar.gz && \ wget https://github.com/cronicle-edge/cronicle-edge/archive/refs/tags/v${CRONICLE_EDGE_VERSION}.tar.gz && \
tar -xf v${CRONICLE_EDGE_VERSION}.tar.gz --strip-components 1 && \ tar -xf v${CRONICLE_EDGE_VERSION}.tar.gz --strip-components 1 && \
rm -rf Docker* .gitignore Readme.md .vscode && \ rm -rf Docker* .gitignore Readme.md .vscode sample_conf/examples/backup sample_conf/examples/docker.sh && \
rm -rf v${CRONICLE_EDGE_VERSION}.tar.gz jq 'del(.storage[] | select(contains(["global/conf_keys"])))' sample_conf/setup.json >> sample_conf/setup-new.json && \
rm sample_conf/setup.json && \
mv sample_conf/setup-new.json sample_conf/setup.json && \
rm -rf v${CRONICLE_EDGE_VERSION}.tar.gz && \
apk del .jq
WORKDIR /app/cronicle WORKDIR /app/cronicle
RUN npm install && \ RUN npm install && \
@ -56,5 +62,6 @@ RUN chmod +x /cronicle-prepare.sh && \
chown -R ${PUID}:${PGID} /app /config chown -R ${PUID}:${PGID} /app /config
EXPOSE 3012 EXPOSE 3012
EXPOSE 3013
ENTRYPOINT [ "/init" ] ENTRYPOINT [ "/init" ]

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) (also published to GHCR)
- :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
``` ```
@ -61,6 +92,37 @@ services:
This container automatically checks for scripts in `/config/init` and runs them at startup. This could be useful if you need to install additional applications into a worker container so it can execute jobs. This container automatically checks for scripts in `/config/init` and runs them at startup. This could be useful if you need to install additional applications into a worker container so it can execute jobs.
Note that any scripts will be run as `root` before permissions are altered in `/app` and `/config`. Anything that an init script does in either of these folders will be owned by `cronicle` when the container continues.
## Reverse Proxying
For a single manager behind a reverse proxy, you may need to specify a specific route for the web-socket connections.
An example using nginx:
```
location /socket.io/ {
client_max_body_size 2048m;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:3012/socket.io/;
}
```
Source: https://github.com/jhuckaby/Cronicle/issues/535
Load-balancing between multiple managers, as described [here](https://github.com/jhuckaby/Cronicle/blob/master/docs/Setup.md#load-balancers), has not been tested, and could behave strangely due to docker DNS.
## Ports ## Ports
|Port |Description| |Port |Description|
@ -80,3 +142,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}
---------------------------------------------------------------------- ----------------------------------------------------------------------
" "
@ -38,16 +39,31 @@ else
exit 1 exit 1
fi fi
echo "Checking permissions in /config and /app." #Importing and running additional scripts placed in /config/init
if [ -d /config/init ]; then
if [ ! "$(stat -c %u /app)" -eq "${PUID}" ] || [ ! "$(stat -c %g /app)" -eq "${PGID}" ] if [ "$(ls -A /config/init)" ]; then
then echo "Running additional startup scripts."
echo "Fixing permissions for /app (this can take some time)." for f in /config/init/*.sh; do
chown -R cronicle:cronicle /app bash "$f"
done
else
echo "/config/init is empty - no additional startup scripts detected."
fi
else
echo "Directory /config/init not found. Creating."
mkdir /config/init && chown -R cronicle:cronicle /config/init
fi fi
if [ ! "$(stat -c %u /config)" -eq "${PUID}" ] || [ ! "$(stat -c %g /config)" -eq "${PGID}" ] echo "Checking permissions in /config and /app."
if [ -n "$(find /app \! -user ${PUID})" ] || [ -n "$(find /app \! -group ${PGID})" ]
then
echo "Fixing permissions for /app (this can take some time)."
chown -R cronicle:cronicle /app || true
fi
if [ -n "$(find /config \! -user ${PUID})" ] || [ -n "$(find /config \! -group ${PGID})" ]
then then
echo "Fixing permissions for /config (this can take some time)." echo "Fixing permissions for /config (this can take some time)."
chown -R cronicle:cronicle /config chown -R cronicle:cronicle /config || true
fi fi

View File

@ -3,34 +3,13 @@
echo "Preparing Cronicle" echo "Preparing Cronicle"
#Importing and running additional scripts placed in /config/init
if [ -d /config/init ]
then
if [ "$(ls -A /config/init)" ]
then
echo "Running additional startup scripts."
bash /config/init/*
else
echo "/config/init is empty - no additional startup scripts detected."
fi
else
echo "Directory /config/init not found. Creating."
mkdir /config/init
fi
if [ ! -d /config/cronicle ] if [ ! -d /config/cronicle ]
then then
echo "Directory /config/cronicle not found. Creating." echo "Directory /config/cronicle not found. Creating."
mkdir /config/cronicle mkdir /config/cronicle
fi fi
#Detecting what mode Cronicle should be started in #Detecting what mode Cronicle should be started in
@ -48,15 +27,27 @@ then
cp -r /app/cronicle/conf /config/cronicle/conf cp -r /app/cronicle/conf /config/cronicle/conf
rm -rf /app/cronicle/conf rm -rf /app/cronicle/conf
ln -s /config/cronicle/conf /app/cronicle/conf ln -s /config/cronicle/conf /app/cronicle/conf
else else
echo "Config dir already exists. Doesn't need creating." echo "Config dir already exists. Doesn't need creating."
echo "Linking persistent config dir back into Cronicle." echo "Linking persistent config dir back into Cronicle."
rm -rf /app/cronicle/conf rm -rf /app/cronicle/conf
ln -s /config/cronicle/conf /app/cronicle/conf ln -s /config/cronicle/conf /app/cronicle/conf
fi fi
if [ ! -f /config/cronicle/conf/ssl.crt ] || [ ! -f /config/cronicle/conf/ssl.key ]
then
echo "One or both SSL components are missing. Generating."
rm -f /config/cronicle/conf/ssl.crt /config/cronicle/conf/ssl.key
openssl req -x509 -newkey rsa:4096 -keyout /config/cronicle/conf/ssl.key -out /config/cronicle/conf/ssl.crt -sha256 -days 3650 -nodes -subj "/C=XX/ST=StateName/L=CityName/O=CompanyName/OU=CompanySectionName/CN=CommonNameOrHostname"
fi
if [ ! -f /config/cronicle/data/.setup_done ] if [ ! -f /config/cronicle/data/.setup_done ]
then then
@ -84,23 +75,51 @@ then
echo "Cronicle is running in 'worker' mode." echo "Cronicle is running in 'worker' mode."
#Copying config directory to /config/cronicle/conf if not already there, then linking back into Cronicle
if [ ! -f /config/cronicle/conf/config.json ] if [ ! -f /config/cronicle/conf/config.json ]
then then
echo "No config found. Copy config.json from the manager server and place it in /config/cronicle/conf dir." echo "No config found. Copy config.json from the manager server and place it in /config/cronicle/conf dir."
mkdir -p /config/cronicle/conf cp -R /app/cronicle/conf /config/cronicle/conf
exit 0 rm -rf /config/cronicle/conf/config.json
echo ''
echo ''
echo '*************************************'
exit 1
else else
#Removing default config.json and linking provided one back into Cronicle echo "Config is present."
rm -rf /app/cronicle/conf/config.json echo "Linking persistent config dir back into Cronicle."
ln -s /config/cronicle/conf/config.json /app/cronicle/conf/config.json
rm -rf /app/cronicle/conf
ln -s /config/cronicle/conf /app/cronicle/conf
fi fi
else 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 options are 'manager' and 'worker'."
exit 1
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 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}