From 0d2d1b90c8bf6be11826520bb56321127aaeba1b Mon Sep 17 00:00:00 2001 From: Vorezal <37914382+vorezal@users.noreply.github.com> Date: Sat, 31 Jan 2026 17:53:26 +0000 Subject: [PATCH 1/4] Docker configuration --- .gitignore | 7 ++++++- Dockerfile | 25 +++++++++++++++++++++++++ compose-example.yaml | 14 ++++++++++++++ entrypoint.sh | 26 ++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 Dockerfile create mode 100644 compose-example.yaml create mode 100644 entrypoint.sh diff --git a/.gitignore b/.gitignore index 182c4aa..f490fe8 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,9 @@ regctl # ignore snooze file snooze.list # ignore updates file -updates_available.txt \ No newline at end of file +updates_available.txt +# ignore user compose files +compose.yaml +compose.yml +docker-compose.yaml +docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f5cab9e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +# Use an official Alpine image as a base +FROM alpine:latest + +WORKDIR /app + +# Install apps +RUN apk update && apk add --no-cache bash curl docker-cli docker-cli-compose supercronic jq regclient msmtp --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ + +# Copy the script files into the container +COPY entrypoint.sh /usr/local/bin/entrypoint.sh +COPY dockcheck.sh /app/dockcheck.sh +COPY urls.list /app/urls.list +COPY notify_templates /app/notify_templates +COPY extras /app/extras +COPY addons /app/addons + +# Create symlink, give execution rights on the script and set proper permissions +RUN ln -s /app/dockcheck.sh /usr/local/bin/dockcheck.sh +RUN chmod +x /usr/local/bin/dockcheck.sh +RUN chmod +x /usr/local/bin/entrypoint.sh + +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] + +# Run the cron daemon in the foreground and tail the log file to keep the container running +CMD ["supercronic", "/app/crontab"] diff --git a/compose-example.yaml b/compose-example.yaml new file mode 100644 index 0000000..fb86825 --- /dev/null +++ b/compose-example.yaml @@ -0,0 +1,14 @@ +services: + dockcheck: + image: dockcheck:latest + restart: unless-stopped + environment: + CRON_SCHEDULE: "0 * * * *" + DOCKCHECK_ARGS: "-mniI -x 10" + CRON_SCHEDULE_1: "30 1 * * *" + DOCKCHECK_ARGS_1: "-milap -x 1" + volumes: + - /etc/localtime:/etc/localtime:ro + - /var/run/docker.sock:/var/run/docker.sock + - ./dockcheck.config:/app/dockcheck.config + - /path/to/projects/docker:/path/to/projects/docker:ro diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..eda57e3 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# Exit immediately if a command exits with a non-zero status +set -e + +# If the CRON_SCHEDULE and DOCKCHECK_ARGS environment variables are set, create the crontab entry for the dockcheck user +if [ -n "$CRON_SCHEDULE" ] && [ -n "$DOCKCHECK_ARGS" ]; then + # Write the environment variable content to a temporary file, ensuring a newline at the end + echo "$CRON_SCHEDULE" /app/dockcheck.sh "$DOCKCHECK_ARGS" > /app/crontab + + # Support additional schedule variables + for schedule_var in "${!CRON_SCHEDULE_@}"; do + suffix="${schedule_var#CRON_SCHEDULE_}" + schedule_value="${!schedule_var}" + args_var="DOCKCHECK_ARGS_${suffix}" + args_value="${!args_var}" + echo "$schedule_value" /app/dockcheck.sh "$args_value" >> /app/crontab + done + + echo "Crontab created." +else + echo "No CRON_SCHEDULE or DOCKCHECK_ARGS environment variable(s) found. No crontab created." +fi + +# Pass control to the CMD command specified in the Dockerfile +exec "$@" From 867b14d4091e796a365f7c6fa2f326a106e79a33 Mon Sep 17 00:00:00 2001 From: Vorezal <37914382+vorezal@users.noreply.github.com> Date: Tue, 3 Feb 2026 02:27:49 +0000 Subject: [PATCH 2/4] Adjust script paths and support run on startup --- Dockerfile | 11 +++++------ entrypoint.sh | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Dockerfile b/Dockerfile index f5cab9e..ac1111a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ WORKDIR /app RUN apk update && apk add --no-cache bash curl docker-cli docker-cli-compose supercronic jq regclient msmtp --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing/ # Copy the script files into the container -COPY entrypoint.sh /usr/local/bin/entrypoint.sh +COPY entrypoint.sh /app/entrypoint.sh COPY dockcheck.sh /app/dockcheck.sh COPY urls.list /app/urls.list COPY notify_templates /app/notify_templates @@ -15,11 +15,10 @@ COPY extras /app/extras COPY addons /app/addons # Create symlink, give execution rights on the script and set proper permissions -RUN ln -s /app/dockcheck.sh /usr/local/bin/dockcheck.sh -RUN chmod +x /usr/local/bin/dockcheck.sh -RUN chmod +x /usr/local/bin/entrypoint.sh +RUN chmod +x /app/dockcheck.sh +RUN chmod +x /app/entrypoint.sh -ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] +ENTRYPOINT ["/app/entrypoint.sh"] # Run the cron daemon in the foreground and tail the log file to keep the container running -CMD ["supercronic", "/app/crontab"] +CMD ["supercronic", "-passthrough-logs", "-json", "/app/crontab"] diff --git a/entrypoint.sh b/entrypoint.sh index eda57e3..f67e013 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -6,7 +6,12 @@ set -e # If the CRON_SCHEDULE and DOCKCHECK_ARGS environment variables are set, create the crontab entry for the dockcheck user if [ -n "$CRON_SCHEDULE" ] && [ -n "$DOCKCHECK_ARGS" ]; then # Write the environment variable content to a temporary file, ensuring a newline at the end - echo "$CRON_SCHEDULE" /app/dockcheck.sh "$DOCKCHECK_ARGS" > /app/crontab + echo "$CRON_SCHEDULE" /app/dockcheck.sh $DOCKCHECK_ARGS > /app/crontab + + if [ -n "$DOCKCHECK_ONSTART" ]; then + echo "Executing: dockcheck $DOCKCHECK_ARGS" + /app/dockcheck.sh $DOCKCHECK_ARGS + fi # Support additional schedule variables for schedule_var in "${!CRON_SCHEDULE_@}"; do @@ -14,7 +19,13 @@ if [ -n "$CRON_SCHEDULE" ] && [ -n "$DOCKCHECK_ARGS" ]; then schedule_value="${!schedule_var}" args_var="DOCKCHECK_ARGS_${suffix}" args_value="${!args_var}" - echo "$schedule_value" /app/dockcheck.sh "$args_value" >> /app/crontab + echo "$schedule_value" /app/dockcheck.sh $args_value >> /app/crontab + + onstart_var="DOCKCHECK_ONSTART_${suffix}" + if [ -n "${!onstart_var}" ]; then + echo "Executing: dockcheck $args_value" + /app/dockcheck.sh $args_value + fi done echo "Crontab created." From 3e5a0e1a1a87d9692412ba05c4d226ba37fc76fa Mon Sep 17 00:00:00 2001 From: Vorezal <37914382+vorezal@users.noreply.github.com> Date: Sat, 14 Mar 2026 01:25:00 +0000 Subject: [PATCH 3/4] Use optional volume instead of building with urls.list. Add comments to compose-example.yaml. --- Dockerfile | 1 - compose-example.yaml | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ac1111a..82c35cb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,7 +9,6 @@ RUN apk update && apk add --no-cache bash curl docker-cli docker-cli-compose sup # Copy the script files into the container COPY entrypoint.sh /app/entrypoint.sh COPY dockcheck.sh /app/dockcheck.sh -COPY urls.list /app/urls.list COPY notify_templates /app/notify_templates COPY extras /app/extras COPY addons /app/addons diff --git a/compose-example.yaml b/compose-example.yaml index fb86825..82e7587 100644 --- a/compose-example.yaml +++ b/compose-example.yaml @@ -11,4 +11,5 @@ services: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock - ./dockcheck.config:/app/dockcheck.config - - /path/to/projects/docker:/path/to/projects/docker:ro + - /path/to/projects/docker:/path/to/projects/docker:ro # add a volume (or volumes, if needed) mapping your Docker project directories to the container + - ./urls.list/:/app/urls.list # optional volume to enable displaying releasenote urls From 060afaa079b03d09d8e898ef8d5a6fef846fe414 Mon Sep 17 00:00:00 2001 From: Robin Ivehult Date: Tue, 17 Mar 2026 08:58:51 +0100 Subject: [PATCH 4/4] added hostname+container_name --- compose-example.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compose-example.yaml b/compose-example.yaml index 82e7587..034eeb2 100644 --- a/compose-example.yaml +++ b/compose-example.yaml @@ -1,6 +1,9 @@ services: dockcheck: - image: dockcheck:latest + container_name: dockcheck + hostname: dockerHostXYZ # The name that will be used in notifications + build: . # Currently building locally for testing before publishing + # image: dockcheck:latest restart: unless-stopped environment: CRON_SCHEDULE: "0 * * * *" @@ -12,4 +15,4 @@ services: - /var/run/docker.sock:/var/run/docker.sock - ./dockcheck.config:/app/dockcheck.config - /path/to/projects/docker:/path/to/projects/docker:ro # add a volume (or volumes, if needed) mapping your Docker project directories to the container - - ./urls.list/:/app/urls.list # optional volume to enable displaying releasenote urls + - ./urls.list/:/app/urls.list # optional volume to enable displaying releasenote urls, can also reference the `./notify_templates/urls.list`