From 96a54b69d2ea6f10b4e90eae6b3d7ee938b62097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhard=20X=2E=20F=C3=BCrst?= Date: Wed, 1 Apr 2026 14:14:15 +0200 Subject: [PATCH] V 2.03 Noch ein paar Anpassungen --- .vscode/launch.json | 4 +- Dockerfile_readin => Dockerfile | 0 deploy.sh | 68 ++++++++++++++++++++++++++------- docker-compose.yml | 28 +++++++------- fetchnewdata.js | 4 +- mongo.js | 2 +- package.json | 6 +-- parse.js | 2 +- 8 files changed, 77 insertions(+), 37 deletions(-) rename Dockerfile_readin => Dockerfile (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index f9a4183..787de84 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -14,8 +14,8 @@ "program": "${workspaceFolder}/fetchnewdata.js", "args": [], "env": { - "MONGOPORT": "27098", - "TYP": "['noise', 'thp']" + "MONGOPORT": "27017", + "TYP": "['radioactivity', 'thp']" } } ] diff --git a/Dockerfile_readin b/Dockerfile similarity index 100% rename from Dockerfile_readin rename to Dockerfile diff --git a/deploy.sh b/deploy.sh index d039f5f..f536c6b 100755 --- a/deploy.sh +++ b/deploy.sh @@ -1,19 +1,59 @@ -# Deploy Sensor-Files via esprimo und docker.citysensor.de -# 2023-12-17 rxf -# +#!/bin/bash -# set -x +# Deploy Script für werte-next +# Baut das Docker Image und lädt es zu docker.citysensor.de hoch -LINUX='esprimo' -path="/home/rxf/Projekte/Sensors" -name=readin +set -e -rsync -avn --exclude=node_modules --exclude=.git --exclude=deploy.sh --exclude=TRANSFERE --exclude=INFLUXSERVER --exclude=data --exclude=log --exclude=.idea --exclude=.vscode --exclude=docs ./ $LINUX:$path/$name -exit 0 +# Konfiguration +REGISTRY="docker.citysensor.de" +IMAGE_NAME="readin" +TAG="${1:-latest}" # Erster Parameter oder "latest" +FULL_IMAGE="${REGISTRY}/${IMAGE_NAME}:${TAG}" -ssh $LINUX "cd $path/$name; - ./build_and_copy.sh localhost; - docker tag $name docker.citysensor.de/$name; - docker push docker.citysensor.de/$name;" +# Build-Datum +BUILD_DATE=$(date +%d.%m.%Y) -exit 0 \ No newline at end of file +echo "==========================================" +echo "Werte-Next Deploy Script" +echo "==========================================" +echo "Registry: ${REGISTRY}" +echo "Image: ${IMAGE_NAME}" +echo "Tag: ${TAG}" +echo "Build-Datum: ${BUILD_DATE}" +echo "==========================================" +echo "" + +# 1. Login zur Registry (falls noch nicht eingeloggt) +echo ">>> Login zu ${REGISTRY}..." +docker login "${REGISTRY}" +echo "" + +# 2. Multiplatform Builder einrichten (docker-container driver erforderlich) +echo ">>> Richte Multiplatform Builder ein..." +if ! docker buildx inspect multiplatform-builder &>/dev/null; then + docker buildx create --name multiplatform-builder --driver docker-container --bootstrap +fi +docker buildx use multiplatform-builder +echo "" + +# 3. Docker Image bauen und pushen (Multiplatform) +echo ">>> Baue Multiplatform Docker Image und pushe zu Registry..." +docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --build-arg BUILD_DATE="${BUILD_DATE}" \ + -t "${FULL_IMAGE}" \ + --push \ + . + +echo ">>> Build und Push erfolgreich!" + +echo "" +echo "==========================================" +echo "✓ Deploy erfolgreich abgeschlossen!" +echo "==========================================" +echo "" +echo "Auf dem Server ausführen:" +echo " docker pull ${FULL_IMAGE}" +echo " docker-compose -f docker-compose.prod.yml up -d" +echo "" diff --git a/docker-compose.yml b/docker-compose.yml index d3fe7af..4d7c3f2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,20 +5,20 @@ volumes: influx_vol: services: - timeseries: - image: timeseries - environment: - DEVELOP: "true" - MONGOHOST: mongodb - MONGOUSRP: "rexfue:noise4mongo" - MONGOAUTH: "true" - INFLUXHOST: influxdb - INFLUXTOKEN: "q35XUBaElzcy8dDd9HF2_mpeHvYCampZg_9mJNP5jeBQRopq3EWIzNTZ555QLSIXhZC05RXCoFgjiaT7VzyNkQ==" - TYP: "[\"noise\", \"thp\"]" - volumes: - - ${PWD}/log:/var/log - container_name: timeseries - restart: unless-stopped +# timeseries: +# image: timeseries +# environment: +# DEVELOP: "true" +# MONGOHOST: mongodb +# MONGOUSRP: "rexfue:noise4mongo" +# MONGOAUTH: "true" +# INFLUXHOST: influxdb +# INFLUXTOKEN: "q35XUBaElzcy8dDd9HF2_mpeHvYCampZg_9mJNP5jeBQRopq3EWIzNTZ555QLSIXhZC05RXCoFgjiaT7VzyNkQ==" +# TYP: "[\"noise\", \"thp\"]" +# volumes: +# - ${PWD}/log:/var/log +# container_name: timeseries +# restart: unless-stopped mongodb: image: mongo:6 diff --git a/fetchnewdata.js b/fetchnewdata.js index a6d525b..025fb52 100644 --- a/fetchnewdata.js +++ b/fetchnewdata.js @@ -24,7 +24,7 @@ import { logit, logerror } from './logit.js' import { DateTime } from 'luxon' import fs from 'fs' import mod_getopt from 'posix-getopt' -import pkg from './package.json' assert { type: "json" } +const pkg = JSON.parse(fs.readFileSync(new URL('./package.json', import.meta.url), 'utf8')) // import nodeSchedule from 'node-schedule' @@ -76,7 +76,7 @@ const fetchNewData = async (args) => { function parse_cmdline(argv) { let parser = new mod_getopt.BasicParser('i(influx)m(mongo)t:(typ)h(help)v(version)',argv); let option; - let ret = {influx: true, mongo: true, typ: TYP} + let ret = {influx: false, mongo: true, typ: TYP} while((option = parser.getopt()) !== undefined) { switch(option.option) { case 'i': diff --git a/mongo.js b/mongo.js index f90fa27..9ef978d 100644 --- a/mongo.js +++ b/mongo.js @@ -1,4 +1,4 @@ -/* Interface for MongoDB + /* Interface for MongoDB */ import { MongoClient } from 'mongodb' import { logit, logerror } from './logit.js' diff --git a/package.json b/package.json index 8592724..8fdb1da 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "timeseries_mongo", - "version": "2.0.2", - "date": "2023-12-17", + "name": "readin", + "version": "2.0.3", + "date": "2026-04-01", "description": "", "main": "main.js", "scripts": { diff --git a/parse.js b/parse.js index 334d788..0c75f0b 100644 --- a/parse.js +++ b/parse.js @@ -168,7 +168,7 @@ export const constructDBaseEntries = async (client, body, args) => { pm: [], thp: [], noise: [], radioactivity: [], gps: [], unknown: [] } let datalines = '' - actualProps = await mongo.getallProperties(client) +// actualProps = await mongo.getallProperties(client) try { for (let item of body) { // check all entries const dt = item.timestamp.split(' ')