Merge pull request '1.0.4' (#8) from develop into main

Reviewed-on: #8
This commit is contained in:
MrMeeb 2023-08-02 11:45:34 +00:00
commit ab7dc07dea
4 changed files with 60 additions and 36 deletions

View File

@ -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 tzdata curl shadow bash xz git procps nodejs npm nano 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 && \
@ -39,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 && \
@ -57,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

@ -92,6 +92,8 @@ 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 ## Reverse Proxying
For a single manager behind a reverse proxy, you may need to specify a specific route for the web-socket connections. For a single manager behind a reverse proxy, you may need to specify a specific route for the web-socket connections.

View File

@ -39,15 +39,30 @@ 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."
for f in /config/init/*.sh; do
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
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 [ -n "$(find /app \! -user ${PUID})" ] || [ -n "$(find /app \! -group ${PGID})" ]
then then
echo "Fixing permissions for /app (this can take some time)." echo "Fixing permissions for /app (this can take some time)."
chown -R cronicle:cronicle /app chown -R cronicle:cronicle /app
fi fi
if [ ! "$(stat -c %u /config)" -eq "${PUID}" ] || [ ! "$(stat -c %g /config)" -eq "${PGID}" ] 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

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,24 +75,32 @@ 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 fi
@ -114,10 +113,12 @@ 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