add cronicle

This commit is contained in:
2026-02-08 11:51:39 -05:00
parent e1582e5bc6
commit f7ae066c70
2 changed files with 73 additions and 0 deletions

52
cronicle/Dockerfile Normal file
View File

@@ -0,0 +1,52 @@
ARG NODE_VERSION=25
FROM node:${NODE_VERSION}-bookworm-slim AS build
ARG CRONICLE_VERSION=v0.9.105
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
bash \
ca-certificates \
curl \
python3 \
build-essential \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/cronicle
RUN curl -L https://github.com/jhuckaby/Cronicle/archive/${CRONICLE_VERSION}.tar.gz | tar zxvf - --strip-components 1 \
&& npm install \
&& node bin/build.js dist \
&& npm cache clean --force
RUN mkdir -p /opt/cronicle/data /opt/cronicle/logs /opt/cronicle/plugins
# ---
FROM node:${NODE_VERSION}-bookworm-slim
ARG CRONICLE_VERSION
ENV CRONICLE_VERSION=${CRONICLE_VERSION}
ENV CRONICLE_foreground=1
ENV CRONICLE_echo=1
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
bash \
ca-certificates \
procps \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /opt/cronicle
COPY --from=build /opt/cronicle /opt/cronicle
COPY entrypoint.sh /opt/cronicle/entrypoint.sh
RUN chmod +x /opt/cronicle/entrypoint.sh
USER node
VOLUME ["/opt/cronicle/data", "/opt/cronicle/logs", "/opt/cronicle/plugins", "/opt/cronicle/queue"]
EXPOSE 3012
ENTRYPOINT ["/opt/cronicle/entrypoint.sh"]

21
cronicle/entrypoint.sh Normal file
View File

@@ -0,0 +1,21 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR=/opt/cronicle
BIN_DIR=${ROOT_DIR}/bin
DATA_DIR=${ROOT_DIR}/data
mkdir -p "${DATA_DIR}"
# Optional one-time config import
if [ -f "${DATA_DIR}/config.json.import" ] && [ ! -f "${DATA_DIR}/.setup_done" ]; then
cp "${DATA_DIR}/config.json.import" "${CONF_DIR}/config.json"
fi
# Run setup once to initialize storage
if [ ! -f "${DATA_DIR}/.setup_done" ]; then
"${BIN_DIR}/control.sh" setup
touch "${DATA_DIR}/.setup_done"
fi
exec "${BIN_DIR}/control.sh" start