Files
laermsensor-stack/noisesensors/docker-compose.yml
T
admin bd5cf9978d readin/readarchive: gemeinsame Module, Stack-Konventionen
mongo.js, influx_post.js und logit.js lagen in beiden Komponenten doppelt
und waren auseinandergelaufen - so ist der Zeitzonen-Fehler entstanden, den
readin seit jeher richtig loest und readFromcsv.js zwei Jahre lang nicht.
Sie liegen jetzt einmal unter common/.

Wo die Fassungen sich widersprachen:
- MONGOAUTH wird als String verglichen. Die readarchive-Fassung pruefte nur
  auf truthy, dadurch schaltete auch MONGOAUTH=false die Auth ein.
- writeDataArray(client, coll, data) nimmt den Collection-Namen direkt;
  readarchive baut ihn mit dem neuen dataCollName(styp).
- getallProperties liefert das Array selbst. Die readarchive-Fassung mit
  {error, properties} war dort ungenutzt.
- properties_collection heisst einheitlich property_coll.

Das Sammelobjekt statistics lag in readin/readdata.js und wurde von
mongo.js und influx_post.js importiert. Es liegt jetzt in
common/statistics.js, damit die gemeinsamen Module readin nicht kennen
muessen.

Der Build-Kontext beider Images ist dadurch das Repository-Wurzelverzeichnis;
das Layout im Image spiegelt das Repository, damit ../common/... unveraendert
aufgeht. Die Volume-Zeile von readin im Compose zieht deshalb auf
/opt/app/readin/data um.

readarchive folgt jetzt den Konventionen des Stacks: deploy.sh statt
build_and_copy.sh, Dockerfile_readarchive statt Dockerfile_rfcsv, und die
eigene docker-compose.yml entfaellt - der Dienst haengt als Profil "tools"
im Compose des Stacks und wird mit Parametern gestartet:

  docker compose run --rm readarchive -t noise -s 2026-07-25 -e 2026-07-29

Getestet: beide Images gebaut, beide gegen Testdatenbanken laufen lassen.
Nicht deployt - die Images in der Registry sind unveraendert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-31 07:25:54 +00:00

106 lines
3.3 KiB
YAML

services:
mongodb:
image: mongo:7
volumes:
- ${LOCALDIR}/noisesensors/data/mongo/entries:/docker-entrypoint-initdb.d
- ${LOCALDIR}/noisesensors/data/mongo/data:/data/db
ports:
- "27017:27017"
container_name: mongodb
environment:
- MONGO_INITDB_DATABASE=sensor_data
- MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USERNAME}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD}
restart: unless-stopped
influxdb:
image: influxdb:2.0
ports:
- '8086:8086'
volumes:
- ${LOCALDIR}/noisesensors/data/influx/data:/var/lib/influxdb2
- ${LOCALDIR}/noisesensors/data/influx/config:/etc/influxdb2
environment:
DOCKER_INFLUXDB_INIT_MODE: setup
DOCKER_INFLUXDB_INIT_USERNAME: ${DOCKER_INFLUXDB_INIT_USERNAME}
DOCKER_INFLUXDB_INIT_PASSWORD: ${DOCKER_INFLUXDB_INIT_PASSWORD}
DOCKER_INFLUXDB_INIT_ORG: citysensor
DOCKER_INFLUXDB_INIT_BUCKET: sensor_data
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${DOCKER_INFLUXTOKEN}
restart:
unless-stopped
container_name: influxdb
readin:
image: docker.citysensor.de/readin
environment:
MONGOHOST: mongodb
INFLUXHOST: influxdb
TYP: "[\"noise\"]"
STORE: ${STORE:-mongo}
MONGOAUTH: true
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
INFLUXTOKEN: ${DOCKER_INFLUXTOKEN}
volumes:
- ${LOCALDIR}/noisesensors/log:/var/log
# Pfad im Image ist jetzt /opt/app/readin, weil readin und readarchive
# sich common/ teilen und das Layout das Repository spiegelt
- ${LOCALDIR}/noisesensors/data:/opt/app/readin/data
container_name: readin
restart: unless-stopped
# Kein Dauerdienst, sondern ein Lauf mit Parametern - liest rueckwirkend die
# Tagesdateien von archive.sensor.community ein:
# docker compose run --rm readarchive -t noise -s 2026-07-25 -e 2026-07-29
# Das Profil verhindert, dass "docker compose up" ihn mitstartet.
readarchive:
image: docker.citysensor.de/readarchive
profiles: ["tools"]
environment:
MONGOHOST: mongodb
INFLUXHOST: influxdb
MONGOAUTH: "true"
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
INFLUXTOKEN: ${DOCKER_INFLUXTOKEN}
volumes:
- ${LOCALDIR}/noisesensors/log:/var/log
- ${LOCALDIR}/noisesensors/data/readarchive:/opt/app/readarchive/data
restart: "no"
logrotate:
image: linkyard/logrotate
volumes:
- ${LOCALDIR}/noisesensors/log:/logs
environment:
LOGROTATE_SIZE: "1k"
LOGROTATE_ROTATE: "7"
LOGROTATE_CRON: "daily"
restart: unless-stopped
container_name: logrotate
sensorapi:
image: docker.citysensor.de/sensorapi
container_name: sensorapi
volumes:
- ${LOCALDIR}/noisesensors/log:/var/log
environment:
INFLUXHOST: influxdb
INFLUXTOKEN: ${DOCKER_INFLUXTOKEN}
DBASE: influx
MONGOHOST: mongodb
MONGOAUTH: true
MONGOUSRP: ${MONGO_ROOT_USERNAME}:${MONGO_ROOT_PASSWORD}
restart: unless-stopped
noise:
image: docker.citysensor.de/noise
volumes:
- ${LOCALDIR}/noisesensors/log:/var/log
container_name: noise
environment:
APIHOST: http://sensorapi:3005
ports:
- "3003:3000"
restart: unless-stopped