41 Commits

Author SHA1 Message Date
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
9cf5b3e39c Merge pull request '1.0.1' (#2) from develop into main
Reviewed-on: #2
2023-05-27 22:10:46 +00:00
363169e636 cleanup misc files in app dir 2023-05-27 22:05:58 +00:00
877e98eff7 set permissions to 1000 at build 2023-05-27 21:58:31 +00:00
90910f9fdf fix to defined cronicle version 2023-05-27 21:53:40 +00:00
1089abc2cb rename user to cronicle 2023-05-27 18:46:23 +00:00
b932a8d2f1 fix not hooking conf in if already setup 2023-05-27 18:15:12 +00:00
52332d7e22 get correct s6 for architecture 2023-05-27 17:49:19 +00:00
96bdd83385 Merge pull request '1.0.0' (#1) from develop into main
Reviewed-on: #1
2023-05-27 16:53:07 +00:00
7d94621192 tweak build behaviour [CI SKIP] 2023-05-27 16:49:13 +00:00
b5d80d90a0 updated readme [CI SKIP] 2023-05-27 16:46:47 +00:00
06f5e5d27a add .gitignore [CI SKIP] 2023-05-27 15:37:58 +00:00
3f239e2527 redesign around s6-overlay 2023-05-27 13:43:46 +00:00
056748f20c update readme [CI SKIP] 2023-05-27 13:42:38 +00:00
d4846a0ccf add goreleaser [CI SKIP] 2023-05-27 13:40:53 +00:00
52460f8741 update drone behaviour [CI SKIP] 2023-05-27 13:40:44 +00:00
d1c1cfd46f create cronicle user at build 2022-12-29 23:49:45 +00:00
bfd684f06f Merge branch 'main' of https://git.mrmeeb.stream/MrMeeb/cronicle-docker 2022-12-29 20:36:16 +00:00
c6007e71f8 logic fixes 2022-12-29 20:36:15 +00:00
4485b53801 Update '.drone.yml' 2022-12-29 19:41:42 +00:00
0f96656929 Update '.drone.yml' 2022-12-29 19:03:26 +00:00
74a1e3f206 drone notify on failure 2022-12-29 17:51:38 +00:00
a611ceff70 Add logic to detect if config is missing as worker 2022-12-29 17:46:57 +00:00
7f98dc08ce Update '.drone.yml' 2022-12-27 11:48:39 +00:00
8cc55e3bf8 Merge branch 'main' of https://git.mrmeeb.stream/MrMeeb/cronicle-docker 2022-12-27 11:44:58 +00:00
6c6395097f add drone, add logic for init scripts 2022-12-27 11:44:51 +00:00
821dbf140c Update 'README.md' 2022-12-26 22:31:41 +00:00
22f4727800 more dev 2022-12-26 22:30:42 +00:00
113839c359 first commit 2022-12-26 18:21:10 +00:00
5 changed files with 66 additions and 162 deletions

View File

@ -1,11 +1,12 @@
kind: pipeline kind: pipeline
type: docker type: docker
name: build-release-images name: build-main-images
trigger: trigger:
event: event:
exclude: exclude:
- pull_request - pull_request
ref: ref:
- refs/heads/main
- refs/tags/** - refs/tags/**
platform: platform:
@ -18,16 +19,36 @@ steps:
image: docker:git image: docker:git
commands: commands:
- git fetch --tags - git fetch --tags
when:
ref:
- refs/tags/**
depends_on: depends_on:
- clone - clone
# Set tags for main branch
- name: make-tags - name: make-tags
image: node image: node
commands: commands:
- echo -n "${DRONE_TAG}, latest" > .tags - echo -n "${DRONE_COMMIT_SHA:0:8}, latest" > .tags
when:
ref:
- refs/heads/main
depends_on: depends_on:
- get-tags - get-tags
- clone
- name: make-tags-release
image: node
commands:
- echo -n "${DRONE_TAG}, latest" > .tags
when:
ref:
- refs/tags/**
depends_on:
- get-tags
- clone
# Build containers from main branch
- name: build-gitea - name: build-gitea
image: thegeeklab/drone-docker-buildx image: thegeeklab/drone-docker-buildx
privileged: true privileged: true
@ -44,6 +65,7 @@ steps:
- linux/amd64 - linux/amd64
depends_on: depends_on:
- make-tags - make-tags
- make-tags-release
- name: build-github - name: build-github
image: thegeeklab/drone-docker-buildx image: thegeeklab/drone-docker-buildx
@ -61,6 +83,7 @@ steps:
- linux/amd64 - linux/amd64
depends_on: depends_on:
- make-tags - make-tags
- make-tags-release
- name: release-gitea - name: release-gitea
image: goreleaser/goreleaser image: goreleaser/goreleaser
@ -69,6 +92,9 @@ steps:
from_secret: gitea_token from_secret: gitea_token
commands: commands:
- goreleaser release -f .goreleaser-gitea.yaml - goreleaser release -f .goreleaser-gitea.yaml
when:
ref:
- refs/tags/**
depends_on: depends_on:
- build-gitea - build-gitea
@ -79,6 +105,9 @@ steps:
from_secret: github_token from_secret: github_token
commands: commands:
- goreleaser release -f .goreleaser-github.yaml - goreleaser release -f .goreleaser-github.yaml
when:
ref:
- refs/tags/**
depends_on: depends_on:
- build-github - build-github
@ -94,78 +123,6 @@ steps:
depends_on: depends_on:
- release-gitea - release-gitea
- release-github - 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-github
- build-gitea - build-gitea

View File

@ -10,7 +10,7 @@ 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.3 ARG CRONICLE_EDGE_VERSION=1.6.2
ENV CRONICLE_foreground=1 ENV CRONICLE_foreground=1
ENV CRONICLE_echo=1 ENV CRONICLE_echo=1
@ -23,7 +23,7 @@ ENV TZ=UTC
ENV LOG_LEVEL=9 ENV LOG_LEVEL=9
#Get required packages #Get required packages
RUN apk update && apk add --no-cache tzdata curl shadow bash xz git procps nodejs npm nano openssl ca-certificates 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 && \
@ -39,18 +39,13 @@ 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 & tidy up things I don't want #Install Cronicle
RUN apk add --no-cache --virtual .jq jq && \ RUN mkdir /app/cronicle && \
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 sample_conf/examples/backup sample_conf/examples/docker.sh && \ rm -rf Docker* .gitignore Readme.md .vscode && \
jq 'del(.storage[] | select(contains(["global/conf_keys"])))' sample_conf/setup.json >> sample_conf/setup-new.json && \ rm -rf v${CRONICLE_EDGE_VERSION}.tar.gz
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 && \
@ -62,6 +57,5 @@ 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

@ -92,37 +92,6 @@ 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|

View File

@ -39,19 +39,6 @@ else
exit 1 exit 1
fi fi
#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
echo "Checking permissions in /config and /app." echo "Checking permissions in /config and /app."
if [ ! "$(stat -c %u /app)" -eq "${PUID}" ] || [ ! "$(stat -c %g /app)" -eq "${PGID}" ] if [ ! "$(stat -c %u /app)" -eq "${PUID}" ] || [ ! "$(stat -c %g /app)" -eq "${PGID}" ]

View File

@ -3,13 +3,34 @@
echo "Preparing Cronicle" echo "Preparing Cronicle"
if [ ! -d /config/cronicle ] #Importing and running additional scripts placed in /config/init
if [ -d /config/init ]
then
if [ "$(ls -A /config/init)" ]
then 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 ]
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
@ -27,27 +48,15 @@ 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
@ -75,34 +84,24 @@ 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."
cp -r /app/cronicle/conf /config/cronicle/conf mkdir -p /config/cronicle/conf
rm -rf /config/cronicle/conf/config.json exit 0
rm -rf /app/cronicle/conf
ln -s /config/cronicle/conf /app/cronicle/conf
echo ''
echo ''
echo '*************************************'
exit 1
else else
echo "Config is present." #Removing default config.json and linking provided one back into Cronicle
echo "Linking persistent config dir back into Cronicle." rm -rf /app/cronicle/conf/config.json
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 options are 'manager' and 'worker'." echo "'$MODE' is not a recognised appion for the MODE environment variable. Accepted appions are 'manager' and 'worker'."
exit 1
fi fi
@ -115,12 +114,10 @@ then
cp -r /app/cronicle/logs /config/cronicle/logs cp -r /app/cronicle/logs /config/cronicle/logs
rm -rf /app/cronicle/logs rm -rf /app/cronicle/logs
ln -s /config/cronicle/logs /app/cronicle/logs ln -s /config/cronicle/logs /app/cronicle/logs
else else
echo "Logs dir already exists. Doesn't need creating." echo "Logs dir already exists. Doesn't need creating."
echo "Linking persistent logs dir back into Cronicle." echo "Linking persistent logs dir back into Cronicle."
rm -rf /app/cronicle/logs rm -rf /app/cronicle/logs
ln -s /config/cronicle/logs /app/cronicle/logs ln -s /config/cronicle/logs /app/cronicle/logs