From 2eaaf8d6d8913e8ac3f27cb64ede8fd33aee5f96 Mon Sep 17 00:00:00 2001 From: Aart van Halteren Date: Sun, 26 Apr 2026 13:25:30 +0200 Subject: [PATCH] Cronjob added inside container --- Dockerfile | 17 ++++++++++++++--- docker-compose.yml | 14 +++++++++----- docker-entrypoint.sh | 10 ++++++++++ reportcron | 3 +++ 4 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 docker-entrypoint.sh create mode 100644 reportcron diff --git a/Dockerfile b/Dockerfile index 5c19585..da79ce5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ruby:2.7 +FROM ruby:3.1 ENV BUILD_PACKAGES="apt-utils build-essential curl less nodejs sudo wget zsh libmariadb-dev libserialport-dev cron" @@ -14,7 +14,18 @@ COPY Gemfile Gemfile.lock ./ RUN \ apt-get update -qq && \ apt-get install -y $BUILD_PACKAGES && \ - bundle install + # Fix bundler version BEFORE bundle install + gem install bundler -v "$(grep -A 1 'BUNDLED WITH' Gemfile.lock | tail -n 1)" && \ + bundle install && \ + rm -rf /var/lib/apt/lists/* +# Copy cron file (if you use /etc/cron.d style) +COPY reportcron /etc/cron.d/reportcron +RUN chmod 0644 /etc/cron.d/reportcron && touch /var/log/cron.log + +# Add entrypoint script +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + +ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] -CMD ["/bin/bash -c ruby ./smartmeter.rb"] diff --git a/docker-compose.yml b/docker-compose.yml index 58e9265..79b678a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: restart: unless-stopped image: mysql:8.3 volumes: - - $PWD/data:/var/lib/mysql + - mysql-data:/var/lib/mysql ports: - 3306:3306 environment: @@ -12,15 +12,19 @@ services: MYSQL_DATABASE: smartmeter smartmeter: container_name: smartmeter + labels: + - diun.enable=false restart: unless-stopped build: . + environment: + MQTT_HOST: 10.0.0.240 command: 'ruby ./smartmeter.rb' - #devices: - # - "/dev/ttyUSB1:/dev/ttyUSB0" + devices: + - "/dev/ttyUSB0:/dev/ttyUSB0" volumes: - .:/usr/src/app depends_on: - db - - +volumes: + mysql-data: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..8cfa5d5 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -e +unset BUNDLE_PATH +unset BUNDLE_BIN + +# Start cron in background +cron + +# Start your Ruby process in foreground +ruby /usr/src/app/smartmeter.rb diff --git a/reportcron b/reportcron new file mode 100644 index 0000000..2452113 --- /dev/null +++ b/reportcron @@ -0,0 +1,3 @@ +PATH=/usr/local/bundle/bin:/usr/local/bundle/gems/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +GEM_HOME=/usr/local/bundle +1 7 * * * root cd /usr/src/app && bundle exec ruby report_mailer.rb >> /var/log/cron.log 2>&1