[vz-users] middleware in docker, CURL Error from middleware: 'Exception': 'Missing context'

Marc Haber mh+volkszaehler-users at zugschlus.de
Mi Nov 9 15:40:50 CET 2022


Hallo,

ich betreibe die Volkszähler-Middleware in einem Docker-Container auf
einem x86-Host. Der vzlogger läuft auf einem Banana Pi.

Seit ich vorletzte Woche das Middleware-Image neu gezogen / gebaut habe,
tut die Middleware nicht mehr. Der vzlogger loggt regelmäßig:

[Nov 09 15:21:14][chn0] CURL Error from middleware: 'Exception': 'Missing context'

docker container logs volkszaehler:
Read configuration /vz/etc/middleware.json, modified by command arguments.
/
+---------------------------+-----------------------------------------+
| host                      | 0.0.0.0                                 |
| port                      | 18080                                   |
| workers                   | 8                                       |
| static-directory          | /vz/htdocs                              |
| logging                   | 0                                       |
| max-requests              | 1000                                    |
| bridge                    | HttpKernel                              |
| bootstrap                 | Volkszaehler\Server\PPMBootstrapAdapter |
| app-env                   | dev                                     |
| debug                     | 0                                       |
| max-execution-time        | 30                                      |
| memory-limit              | -1                                      |
| limit-concurrent-requests |                                         |
| request-body-buffer       |                                         |
| ttl                       | 0                                       |
| populate-server-var       | 1                                       |
| socket-path               | .ppm/run/                               |
| pidfile                   | .ppm/ppm.pid                            |
| reload-timeout            | 30                                      |
| cgi-path                  | /usr/local/bin/php                      |
+---------------------------+-----------------------------------------+
Starting PHP-PM with 8 workers, using StreamSelectLoop ...
8 workers (starting at 5501) up and ready. Application is ready at http://0.0.0.0:18080/
[49/3230]mh at corte:~/volkszaehler $

Weitere Informationen kommen nicht hinzu während des Laufs.

(Den Port hatte ich auf 18080 verschoben weil ich zuerst dachte, der
vzlogger würde gar nicht mit der Volkszähler-Middleware, sondern mit
einer auf einer anderen IP des Docker-Hosts auf Port 8080 laufenden
Applikation sprechen. Das ist aber nicht der Fall.)

Ich baue mein Image mit "docker build --tag local/volkszaehler-off ."
aus einem Checkout von
https://github.com/volkszaehler/volkszaehler.org.git und starte es mit
docker run -d --network br196 --ip6 $IPV6 --ip $IPV4 -v /var/run/docker.sock:/var/run/docker.sock --name volkszaehler local/volkszaehler-off

(Das war damals mein erster Docker-Container, inzwischen benutze ich
docker-compose, aber den Volkszähler anzufassen habe ich mich noch nicht
getraut).

Das Dockerfile aus dem Repository habe ich gepatcht wegen des Ports
18080 und die Zeile RUN sed -i '/^[[:space:]]\"port\"/s/8080/18080/'
/vz/etc/middleware.json hinzugefügt. Da es mit "CMD /vz/vendor/bin/ppm
start -c /vz/etc/middleware.json --static-directory /vz/htdocs
--cgi-path=/usr/local/bin/php" endet, vermute ich dass hier kein Proxy
im Spiel ist (was für mich auch ok ist, das ist alles intern) und ich
deswegen das "middleware.php" überall weglassen muss.

Wenn ich mit dem Browser auf http://$IP:18080/ gehe, komme ich auf einem
funktionstüchtigen Webfrontend heraus, und wenn ich weit genug
zurückblättere, zeigt er mir auch die alten Werte aus der Datenbank an.

Es hakt also nur bei der Übertragung aus dem vzlogger.

Hier die vzlogger.conf:

{
  "retry" : 0,                  /* how long to sleep between failed requests, in seconds */
    "daemon": true,             /* run periodically */
    "verbosity" : 5,            // log verbosity (0=log_alert, 1=log_error, 3=log_warning, 5=log_info, 10=log_debug, 15=log_finest)
    "log" : "/var/log/vzlogger/vzlogger.log", /* path to logfile, optional */

    "mqtt": {
        "enabled": true,
        "host": "mqtt.ka51.zugschlus.de",
        "port": 1883,
        "id": "vzlogger",
        "cafile": "",
        "capath": "",
        "certfile": "",
        "keyfile": "",
        "keypass": "",
        "keepalive": 30,
        "topic": "vzlogger/data",
        "id": "",
        "user": "",
        "pass": "",
        "retain": true,
        "rawAndAgg": true,
        "qos": 0,
        "timestamp": false
    },
    "meters":
      [
      {
        "protocol" : "s0",
        "enabled" : true,
        "device" : "/dev/USBserialWasser",
        "aggtime" : 30,
        "aggmode" : "sum",
        "aggfixedinterval" : false,
        "send_zero": true,
        "channels": [
        {
          "uuid" : "fa6c4b30-8303-11e9-a746-5fe24f8ae232",
          "middleware" : "http://volta.ka51.zugschlus.de:18080/",
          "identifier" : "Impulse",
          "aggmode" : "none",
        }
        ]
      },

(~ 6 andere Meter-Einträge und die korrekt geschlossenen Klammern
weggelassen, ich liefer das gerne nach wenn es hilft)

Was kann denn hier mein Problem sein?

Grüße
Marc

-- 
-----------------------------------------------------------------------------
Marc Haber         | "I don't trust Computers. They | Mailadresse im Header
Leimen, Germany    |  lose things."    Winona Ryder | Fon: *49 6224 1600402
Nordisch by Nature |  How to make an American Quilt | Fax: *49 6224 1600421


Mehr Informationen über die Mailingliste volkszaehler-users