Das Problem ist, dass Du als Image 3.3 angegeben hast. Latest Image bezieht sich immer auf das angegebene Image. Hättest Du beim Anlegen des Containers latest als Image ausgewählt, dann hätte er vor zwei Wochen das 3.3 Image genommen und heute halt 3.4 (latest ist immer das letzte stable build, ist im Hub auch so erklärt)
Template erstellen:
Du meldest Dich in Portainer an.
Anschließend wählst Du die lokale Instanz aus (ich gehe mal davon aus, dass Du ohnehin nur die eine hast)
Nun wählst Du aus dem Menü links aus dem Punkt App Templates den Unterpunkt Custom Templates aus.
Auf der rechten Seite gibt es eine Schaltfläche "Add Custom Template", welche Du auswählst.
Nun gibst Du die notwendigen Informationen an:
1. Title: z.B. openhab (nur Kleinbuchstaben, Zahlen und Minus, also openhab-3 wäre ok, openHAB wäre nicht ok).
2. Description: z.B. openHAB 3.4
3. Note: irgendwas sinnvolles, damit Du Dich später noch erinnerst
4. Icon URL:
https://www.openhab.org/openhab-logo-square.png
5. Platform: Linux
6. Type: Standalone
7. Build Method: Web Editor
8. Im Editorfenster fügst Du folgendes ein:
Code: Alles auswählen
version: '2.2'
services:
openhab:
image: "openhab/openhab:latest"
restart: always
network_mode: host
volumes:
- "/etc/localtime:/etc/localtime:ro"
- "/etc/timezone:/etc/timezone:ro"
- "/opt/openhab/addons:/openhab/addons"
- "/opt/openhab/conf:/openhab/conf"
- "/opt/openhab/userdata:/openhab/userdata"
environment:
CRYPTO_POLICY: "unlimited"
EXTRA_JAVA_OPTS: "-Duser.timezone=Europe/Berlin -Dgnu.io.rxtx.SerialPorts=/dev/ttyUSB0"
OPENHAB_HTTP_PORT: "8080"
OPENHAB_HTTPS_PORT: "8443"
USER_ID: "998"
GROUP_ID: "997"
devices:
- "/dev/ttyUSB0:/dev/ttyUSB0"
Du gibst also latest als Image an, damit beim nächsten Update automatisch die Version 4 genommen wird (in einem halben Jahr...)
Du gibst für die Volumes die gleichen Pfade an wie bisher, damit der neue Container die Daten weiter verwendet.
Du gibst für die Environment Variablen hinter der Variablen einen Doppelpunkt an und setzt Anführungszeichen um die Werte
Du verwendest das Schlüsselwort devices für die Liste der zu übergebenden Devices.
Du gibst in der Environment Variablen EXTRA_JAVA_OPTS zusätzlich den Serial Port mit an, damit Java diesen überhaupt nutzen kann.
Ganz unten auf Create Template klicken, womit das Template nun gespeichert sein sollte.
In der Liste der Custom Templates taucht nun das Template für openHAB auf.
Nun ist der Zeitpunkt gekommen, den alten Container zu stoppen und zu löschen.
Anschließend wechselst Du in die Custom Templates, klickst dort VORNE auf das soeben erstellte Template und deployst es. Du kannst natürlich vorher noch Anpassungen vornehmen (Customize Template).
Wenn Du alles richtig gemacht hast und es auch tatsächlich ein Serial Device mit Namen ttyUSB0 gibt, sollte nach kurzer Zeit die Anzeige auf Stacks wechseln, wo Du nun Deinen neuen openHAB Stack sehen müsstest. Passt das so weit, kannst Du in die Liste der Container zurück wechseln, wo Du den laufenden Container sehen müsstest. Dort kannst Du auch das Log für das docker Image einsehen.
Nicht davon irritieren lassen, wenn der Container eine Weile auf starting stehen bleibt, einfach mal versuchen, auf Port 8080 mit http oder auf Port 8443 mit https zuzugreifen.
Zum weiteren Verständnis: Ein Stack kann durchaus auch mehrere Container beinhalten. Du könntest also z.B. noch einen Container für Grafana und einen Container für InfluxDB zu diesem Template hinzufügen. Wenn du dann das Template deployst, werden alle drei Container auf einen Schlag erstellt. Mit einer(!) passenden docker-compose.yaml kannst Du also ein komplettes openHAB System aufsetzen lassen, welches sich zu 99% wie ein mit openHABian aufgesetztes System verhält.
Das eine Prozent ist der Tatsache geschuldet, dass openHABian einige Dinge tut, die man in Docker halt anders löst. Die wesentlichen Dinge kann man natürlich zu 100% abbilden, wenn man sich darum bemüht.
Ich könnte mir durchaus vorstellen, dass es irgendwann ein "Konkurrenzprodukt" zu openHABian geben wird, welches Docker als Unterbau verwendet. Interessant ist das vor allem, weil Docker auf vielen Plattformen läuft, nicht nur auf debian-artigen Distributionen.
Aber einen passenden Stack zusammenzustellen ist eben auch nicht trivial und braucht auch Zeit.