Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. USB in Docker via neuer Container über Compose u.a. andere

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    USB in Docker via neuer Container über Compose u.a. andere

    This topic has been deleted. Only users with topic management privileges can see it.
    • Marc Berg
      Marc Berg Most Active last edited by

      @chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:

      @marc-berg @Glasfaser : jetzt gehts um die Linux-Paket, bis auf das asterisk hat es geklappt:

      Ich habe den Thread jetzt nicht im Detail verfolgt, aber ist es denn zwingend erforderlich, Asterisk mit in den ioBroker Container zu packen? Es gäbe ja auch fertige Asterisk Docker Images.

      Wenn notwendig, dann ist ja das Userscript "userscript_firststart.sh" das Richtige, um die notwendigen Schritte zur Installation zu hinterlegen. Dieses Script wird einmalig nach dem ersten Start eines Containers ausgeführt, bzw. nach jedem "Recreate".
      Den Link zur Installation hat ja @OliverIO schon verlinkt, wobei man sagen muss, dass dort ja keine reine Installation vorgenommen wird, sondern Asterisk kompiliert + installiert wird. Das bedeutet, dass auch alle Werkzeuge zum Kompilieren mit eingebaut werden müssen (weiß jetzt nicht, ob das alles schon im ioBroker Image steckt).
      Alles nicht schön, aber wahrscheinlich machbar.

      OliverIO 1 Reply Last reply Reply Quote 0
      • OliverIO
        OliverIO @Marc Berg last edited by OliverIO

        @marc-berg
        @Chrisham

        ich hatte auch schon mal nach docker image geschaut, aber kein offizielles gefunden.
        die asterix leute überlegen noch und tendieren wohl eher keins bereitzustellen, weil es wohl viele individuelle szenarien gibt.
        aber da cih asterix nicht nutzte kann ich das nicht beurteilen.

        ob man ein image aus einer Zweitquelle nutzt muss man selber entscheiden.
        zumindest kann man hier support erhalten.
        https://github.com/andrius/asterisk
        zunächst wollt ich schon sagen, das man hier auch pech hat, weil er bspw bei alpine sich asterix aus einem repo isntalliert, aber bei debian wird alles kompiliert.
        also in einem separaten container wird wahrscheinlich die beste lösung sein

        C 1 Reply Last reply Reply Quote 0
        • C
          Chrisham @OliverIO last edited by

          @oliverio @Marc-Berg : Ok, danke für die Hinweise.

          • Händische Installation: das müsste ja erstmal weiterhin gehen, also im IOBroker-Docker-Container über

            apt-get install asterisk
            nachteil ist halt, bei jedem Container-Udate ist es wieder verloren

          • Separater container: da gibt es ja jede Menge, also wenn ich über DSM-docker-Image search gehe:
            astersik.png
            der erste ist wohl der auf (https://github.com/andrius/asterisk) verlinkte Docker.
            Aber dann muss ich die Container (IOBroker und Astersik-Container) irgendwie im "Multi-Host" oder "Master-Slave"-Mode betreiben, richtig? Denn der Adapter in IOBroker muss ja direkt auf die Linux-Prozesse im Asterisk-Container zugreifen können, oder sehe ich das falsch?

          C 1 Reply Last reply Reply Quote 0
          • C
            Chrisham @Chrisham last edited by

            @chrisham Ich habe jetzt mal asterisk über den andrius/... container mit ins compose aufgenommen und den container instantiiert.
            Leider kann sich der Asterisk-Adapter in IOBroker nicht mit dem asterisk-Manager (Prozess) im separaten container connecten:
            2023-10-28 01_27_13-logs - iobroker-4 - Brave.png

            Jetzt geht wieder die suche los:
            a) liegt es daran, dass verbindung zwischen den containern (iobroker -> asterisk) nicht möglich ist (host, slave,...)?=
            b) oder liegt es daran, dass evtl. der asterisk-prozess im container gar nicht gestartet ist...

            ... und alles immer noch um den USB-Port zum Laufen zu bringen...

            OliverIO 1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO @Chrisham last edited by OliverIO

              @chrisham

              Dann sag mal was du wo wie konfiguriert hast.
              Von alleine finden sich die Container natürlich nicht

              Erinnere dich an influx. Der servicename kann als hostname verwendet werden,
              Sofern sie im gleichen Netzwerk zusammengeschaltetet wurden

              C 1 Reply Last reply Reply Quote 0
              • C
                Chrisham @OliverIO last edited by

                @oliverio Klar:

                • docker-compose setup (mit neuem asterisk-container):
                version: '3'
                services:
                  iobroker:
                    network_mode: "host"
                    restart: always
                    image: buanet/iobroker:latest
                    container_name: iobroker-4
                    hostname: iobroker-4
                    ports:
                      - "8081:8081"
                      - "3671:3671"
                    volumes:
                      - /volume1/docker/iobroker-Chrisham:/opt/iobroker
                      - /volume1/docker/userscripts:/opt/userscripts
                      - /volume1/docker/Backup:/opt/backup/
                    environment:
                      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                      - DEBIAN_FRONTEND=teletype
                      - LANG=de_DE.UTF-8
                      - LANGUAGE=de_DE:de
                      - LC_ALL=de_DE.UTF-8
                      - SETGID=1000
                      - SETUID=1000
                      - TZ=Europe/Berlin
                      - USBDEVICES=/dev/ttyUSB0
                      - PACKAGES=influxdb2-cli
                    devices:
                      - /dev/ttyUSB0:/dev/ttyUSB0
                  asterisk:
                    restart: always
                    image: andrius/asterisk:latest
                    container_name: asterisk-4
                    ports: 
                      - "5038:5038"
                    environment:
                      - PACKAGES=ffmpeg lame sox libsox-fmt-mp3
                  influxdb:
                    restart: always
                    image: influxdb:latest
                    container_name: influxdb-4
                    ports:
                      - "8086:8086"
                    volumes:
                      - /volume1/docker/influxdb/config:/etc/influxdb2
                      - /volume1/docker/influxdb/data:/var/lib/influxdb2
                    environment:
                      - PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
                      - GOSU_VER=1.12
                      - INFLUXDB_VERSION=2.7.1
                      - INFLUX_CLI_VERSION=2.7.3
                      - INFLUX_CONFIGS_PATH=/etc/influxdb2/influx-configs
                      - INFLUXD_INIT_PORT=8086
                      - INFLUXD_INIT_PING_ATTEMPTS=600
                      - DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME=default
                      - DOCKER_INFLUXDB_INIT_MODE=setup
                      - DOCKER_INFLUXDB_INIT_USERNAME=iobroker
                      - DOCKER_INFLUXDB_INIT_PASSWORD=*1Xs(QD5gY0!B&XHe1_x
                      - DOCKER_INFLUXDB_INIT_ORG=smarthome
                      - DOCKER_INFLUXDB_INIT_BUCKET=iobroker
                  grafana:
                    restart: always
                    image: grafana/grafana:latest
                    container_name: grafana-4
                    ports: 
                      - "3000:3000"
                    volumes:
                      - /volume1/docker/grafana:/var/lib/grafana
                      - /volume1/docker/grafana:/var/lib/grafana/plugins
                

                Und im Asterisk-Adapter sieht es dann so aus:
                2023-10-28 10_49_14-Window.png

                Was wäre noch relevant?

                OliverIO 1 Reply Last reply Reply Quote 0
                • OliverIO
                  OliverIO @Chrisham last edited by OliverIO

                  @chrisham

                  Was steht im Log von ioBroker?
                  Funktioniert Asterix?
                  Läuft der Container?

                  C 1 Reply Last reply Reply Quote 0
                  • C
                    Chrisham @OliverIO last edited by

                    @oliverio Anbei die Infos.

                    • log IOBroker:
                      2023-10-28 20_58_33-Window.png

                    • Asterisk Funktionalität geht natürlich nicht, d.h. ich kann die Telefonanrufe nicht absetzen
                      Das ist konzeptionell so: Blocklyscript --> Asterisk --> Fritzbox --> Telefonanruf

                    • Asterisk-Container
                      Der läuft, es gibt auch ein längeres Log mit dem Eintrag "Asterisk Ready" am Ende, aber davor auch mit mehreren Warnungen "cel_wqlite3_custom declined to load,... usw"
                      Anbei das log-file:
                      asterisk-4.csv

                    OliverIO 1 Reply Last reply Reply Quote 0
                    • OliverIO
                      OliverIO @Chrisham last edited by OliverIO

                      @chrisham

                      ein paar errors sind auch drin. allerdings kann ich nicht bewerten ob das hinnehmbare fehler sind.
                      normalerweise ist error, was man korrigieren muss, warning sollte man prüfen, aber stört erstmal das programm nicht. vielleicht hast du ja noch ein logfile vom altern asterix. dann kannst du da mal vergleichen

                      aber was du zuerst ausprobieren kannst:
                      ich habe gesehen, das hier port 5060 verwendet wird.
                      d.h. anstatt 5038 musst du im docker config 5060 eintragen
                      und wenn der container neu erstellt wurde dann in der adapterkonfiguration auch 5060

                      C 1 Reply Last reply Reply Quote 0
                      • C
                        Chrisham @OliverIO last edited by

                        @oliverio said in USB in Docker via neuer Container über Compose u.a. andere:

                        @chrisham

                        ein paar errors sind auch drin. allerdings kann ich nicht bewerten ob das hinnehmbare fehler sind.
                        normalerweise ist error, was man korrigieren muss, warning sollte man prüfen, aber stört erstmal das programm nicht.

                        Ja, die Fehler sind für mich auch erstmal etwas kryptisch, wüsste spontan auch nicht, ob die a) relevant sind für das Connection-Problem und b) wie ich sie beseitigen würde, es ist ja erstmal einfach der Standard container erzeugt worden, wenn es da schon Probleme gibt.

                        vielleicht hast du ja noch ein logfile vom altern asterix. dann kannst du da mal vergleichen
                        Beim alten asterisk, also dem ganz ursprünglichen wo es funktionierte, war es ja so, dass ich das asterisk (und die anderen Linux-Pakete) manuell (über apt-get install asterisk) installierte. Aber diese Option scheint es ja jetzt grundsätzlich nicht mehr zu geben, da das debian-Paket nicht mehr angeboten wird, sonst würde die Installation ja auch über die container-compose erzeugung funktionieren. Also von daher: da habe ich leider kein log-file mehr bzw. bin mir auch nicht sicher, ob es da überhaupt (auf Container-Ebene) einen log-Eintrag für so ein nachträglich installiertes Linux-Paket gegeben hätte.

                        aber was du zuerst ausprobieren kannst:
                        ich habe gesehen, das hier port 5060 verwendet wird.
                        Hmm, ah ok, was meinst du genau mit "... hier port 5060 verwendet wird..."? Also, wo hast du das gelesen, in der Doku vom andrius container? Also da war tatsächlich eine Inkonsistenz meinerseits: in der config, die ich hier gepostet hatte, stand 5038, aber in der portainer-config war schon 5060 eingetragen. Ich habe es dennoch nochmals "from scratch" neu erstellt, leider mit dem gleichen negativen Ergebnis...
                        hier nochmals das log-file von diesem versuch:
                        asterisk-5 (1).csv

                        d.h. anstatt 5038 musst du im docker config 5060 eintragen

                        und wenn der container neu erstellt wurde dann in der adapterkonfiguration auch 5060

                        In der Adapter-config steht definitiv 5060 drin.

                        Noch was anderes (keine Ahnung ob das relevant ist), was mir aufgefallen ist: den asterisk-container zu betreten, einmal über ein Terminal über DSM-GUI klappt auch nicht, siehe Fehlermeldung:
                        2023-10-29 16_47_33-DS920-Plus - Synology NAS - Brave.png

                        Dann habe ich über cmd-Shell versucht, den Container zu betreten:

                        sudo docker exec -u 0 -it c6a9ade9eac7 bash

                        Das ging natürlich auch nicht, dafür aber mit
                        sudo docker exec -u 0 -it c6a9ade9eac7 sh

                        Es gibt also wohl ein bash-script, sondern ein sh-script. Ist aber wohl für das vorliegende Problem irrelevant.
                        Trotzdem ist es strange, wie sich dieser container "im innern" präsentiert:
                        2023-10-29 17_00_27-Downloads.png

                        Normalerweise steht da an der Prompt-Eingabe im Terminal immer der Container-Name:
                        2023-10-29 17_01_42-Smart-Home-Automation-IOBroker_1.8.docx - Word.png

                        Soll ich vllt. einmal einfach einen anderen (also nicht den andrius ) container-image versuchen für asterisk....?

                        Aber zwischendurch mal einfach ein dickes DANKESCHÖN an dich, echt klasse der Support, und mit viel Geduld !!👏

                        OliverIO 1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @Chrisham last edited by

                          @chrisham

                          • port 5060
                            oben in der geposteten asterix docker konfiguration stand noch 5038. der ersteller des dockerimages hat innendrin 5060 gewählt. das muss natürlich durchgängig passen. sonst erreichen sich die beiden dienste nie

                          • console im container öffnen

                          @chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:

                          Noch was anderes (keine Ahnung ob das relevant ist), was mir aufgefallen ist: den asterisk-container zu betreten, einmal über ein Terminal über DSM-GUI klappt auch nicht, siehe Fehlermeldung

                          ja, das hängt immer stark vom container ab. innerhalb des containers läuft ein komplett eigenständiges betriebssystem. da es ja um die eigentliche applikation geht, macht man da nur das mindeste rein was man braucht. beim latest wird alpine als basis betriebssystem genutzt. die bieten momentan so ziemlich das kleinste basis image an und ist für docker super.
                          da ist allerdings kein bash drin, sondern ash (wie bei linux üblich gibt es von allem oft mehrere varianten. portainer macht das auch so, das standardmäßig immer /bin/bash wird, dort kann man aber auch /bin/sh auswählen. das wäre eigentlich der richtigere befehl, da sich damit immer das standard shell des betriebssystems öffnet
                          auch pakete nachträglich noch installieren (nicht empfohlen, da bei der nächsten regeneration weg) ist bei alpine wieder ein anderer befehl. da muss man dann leider nachschauen

                          • innenleben des containers

                          @chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:

                          Trotzdem ist es strange, wie sich dieser container "im innern" präsentiert:

                          warum, sieht doch gut aus. ist das standard dateisystem von linux.
                          wie oben geschrieben. container ist nix anderes als ein kommplett virtualisiertes betriebssystem, das komplett abgekapselt vom normalen betriebssystem läuft.
                          das benötigt natürlich auch sein seine dateistruktur. irgendwo da ist dann asterix auch installiert ( /var/lib/asterix + noch ein paar weitere verwendete verzeichnisse, start ist von /var/sbin/asterix aus)
                          die shell datei docker_entrypoint ist das startskript, welches dann docker aufruft, sobald der container meldet, das er läuft. in dem startskript steht dann drin wie die eigentliche anwendung dann gestartet wird.

                          • prompt

                          @chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:

                          Normalerweise steht da an der Prompt-Eingabe im Terminal immer der Container-Name:

                          bei docker innen drin gibt es kein normalerweise. das ist alles dem container ersteller überlassen. dieser hat dem shell halt bei der erstellung nicht gesagt, wie das prompt aussehen soll. meist legt ein dockercontainer beim start einen eigenen group/user an. auch hier wird eine gruppe und ein user "asterix" angelegt.
                          anpassen kannst du das mit
                          https://wiki.ubuntuusers.de/Bash/Prompt/#:~:text=Ein persönlicher Prompt kann die,wie mit Farben gearbeitet wird.
                          allerdings gilt das für bash. evtl gehen ein paar dinge bei ash da nicht

                          wenn dir ein debian basiertes image lieber ist, dann kannst du im dockerkonfigurationsdatei als image anstatt andrius/asterix:latest ein andrius/asterisk:1.4-debian angeben.
                          allerdings ist das schon 2 jahre alt. er macht wohl keine debian images mehr.

                          C 1 Reply Last reply Reply Quote 0
                          • C
                            Chrisham @OliverIO last edited by

                            @oliverio Ok, danke.
                            Ich habe jetzt mal noch weiter in den asterisk container reingeschaut, da steht in etc/asterisk/manager.conf das:
                            2023-10-29 22_14_46-OpenSSH SSH client.png

                            basierend auf welcher Info hast du das: "der ersteller des dockerimages hat innendrin 5060 gewählt."?

                            OliverIO 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @Chrisham last edited by OliverIO

                              @chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:

                              basierend auf welcher Info hast du das: "der ersteller des dockerimages hat innendrin 5060 gewählt."?

                              das steht hier. das ist das dockerfile für die alpine version.
                              da wird definiert auf welchem basis image das besteht, welche packete installiert werden sollen und was sonst noch eingerichtet werden muss
                              https://github.com/andrius/asterisk/blob/ef1c958d45eacfc301b80f8b0de079d43254a02b/alpine/Dockerfile.erb#L29

                              aber wie gesagt ich habe keine ahnung welcher port für was ist.
                              dann kannst du im docker config mal einfach noch den 5038 dazuschreiben

                              5038:5038
                              

                              alternativ kannst du bei dem asterix container auch mal noch den hostmode aktivieren

                              C 1 Reply Last reply Reply Quote 0
                              • C
                                Chrisham @OliverIO last edited by

                                @oliverio yep, mit 5038 und hostmode im astersik hat es jetzt geklappt. Also Verbindung zwischen Asterisk-Adapter im IOBroker und dem asterisk-container scheint jetzt wohl zu funktionieren, zumindest der connect error ist weg.
                                Ein kleiner Schritt weiter...

                                Telefonanrufe klappen zwar immer noch nicht, aber das ist jetzt eine innere asterisk-config in verbindung mit der fritzbox-config... muss jetzt da weitersuchen

                                C 1 Reply Last reply Reply Quote 0
                                • C
                                  Chrisham @Chrisham last edited by

                                  @chrisham , @OliverIO
                                  Und parallel dazu muss ich mich gleich noch mit dem nächsten schritt beschäftigen: für einige dieser Container (grafana, asaterisk) muss ich im innern configurations-files neu erstellen bzw. abändern.
                                  Nun möchte ich dies in zukunft beim update ja auch nicht immer wieder händisch machen müssen, sondern wenn schon, dann auch gleich über das portainer docker compose verfahren mit erledigen.
                                  was ist dazu das vorgehen? Kann man der container erstellung gleich ein script mitgeben, das diese config-file Anpassung mitmacht?

                                  OliverIO 1 Reply Last reply Reply Quote 0
                                  • OliverIO
                                    OliverIO @Chrisham last edited by

                                    @chrisham

                                    ja,
                                    dafür gibt es in dockler den mechanismus der volumes.
                                    davon gibt es 2 typen

                                    • named volumes = volumes die einen namen haben und die docker in einem internen dateibereich aufbaut. wenn die bezeichnung nicht geändert wird, so steht dieser dateibereich auch nach der regeneration dem container wieder zur verfügung
                                    • bind mount volumes = das sind gemappte pfade von einzelnen dateien oder ganzen verzeichnisse, die auf dein eigenes dateisystem zeigt. dort kannst du dann in diesem verzeichnis dateien bearbeiten, die dann im container "eingeblendet" werden. auch diese stehen nach einer regeneration dem container wieder zur verfügung.

                                    der container entwickler definiert selbst im dockerfile entsprechende mounts, wenn er der meinung ist, das da volatile daten enthalten sind, die nach einer regeneration erhalten bleiben müssen

                                    in deiner docker management oberfläche müsste es auch eine ansicht aller vorhandenen named volumes geben. bei manchen müsste "verwaist" oder "nicht verwendet" dran stehen, weil der zugehörige container nicht mehr existiert. dort kann man die auch löschen.

                                        volumes:
                                          - /volume1/docker/iobroker-Chrisham:/opt/iobroker
                                          - /volume1/docker/userscripts:/opt/userscripts
                                          - /volume1/docker/Backup:/opt/backup/
                                    

                                    das was du hier siehst nennt sich bind-volumes. bei der ersten zeile sieht man,
                                    das der pfad IM container /opt/iobroker sich aus dem verzeichnis /volume1/docker/iobroker-Chrisham bildet. d.h. alles was den iobroker ausmacht ist eigentlich auf deiner festplatte der synology. jede Anderung, die du dort machst, wird auch sofort IM container wirksam. manchmal muss man dienste neu starten, das die Applikation das neu einliest. aber da gibt es keinen unterschied, als wenn die applikation nativ installiert wurde

                                    ich würde die ganzen konfigurationsdateien bzw. verzeichnisse in denen sich die konfigruationen befinden per solche bind mount volumes definieren und dies dann auch regelmäßig in ein backup einbeziehen. leider hilft dir der iobroker backup da nicht. das musst du selber organisieren.

                                    Hier kannst du mal schauen. da sind Programme benannt mit denen man das durchführen kann. Leistungsfähig ist bspw rsync
                                    Du musst dich dann noch mit einer backup strategie auseinandersetzen. d.h. wie oft ein backup gemacht wird und wie lange das aufgehoben wird.
                                    Ich verwende 7xdaily,4xWeekly,12xMothly
                                    d.h. ich mache jeden Tag ein Backup und hebe das 7 Tage lang auf. Nach einer Woche werden die letzten 6 gelöscht, das Sonntagsbackup wird dann zum weekly. Auch da hebe ich die 4 Wochen lang auf. Das letzte wird dann zum monthly und die 3/4 Wochen davor werden gelöscht. von den Monthly hebe ich immer die letzten 12 auf. Einmal Monatlich wird jeweils das älteste der monthlys gelöscht.
                                    alle meine dockervolumes habe ich in einem verzeichnis. darunter dann eine ebene je service und daruntern je container ein separates verzeichnis und wieder darunter dann für jedes einzelne mount ein verzeichnis.
                                    das wird dann täglich kopiert und in ein verzeichnis unter weekly gespeichert, das weekly_<datum> heißt
                                    weiterhin wird jeden tag geprüft, ob verzeichnisse umbenannt/verschoben werden müssen gemäß den obigen regeln.

                                    C 1 Reply Last reply Reply Quote 0
                                    • C
                                      Chrisham @OliverIO last edited by

                                      @oliverio Vielen Dank für die Info.

                                      1.) Backup: ja, das habe ich schon konfiguriert:

                                      • ich habe meine kompletten Arbeitesdaten nicht mehr auf der lokalen Festplatte, sondern alles auf dem NAS, für dieses NAS habe das Hyperbackup (Synology-App) über das ich mit anderem Nutzer (räumlich getrennt, d.h. anderes Haus, andere Stadt) nächtlich eine Kreuz-Sicherung mache. Und auch mit gestuftem Aufbewahrungsplan:
                                        • tägliche Sicherung über 1 Woche aufbewahren
                                        • wöchentliche Sicherung über 2 Monate aufbewahren
                                        • monatliche Sicherung über 1 Jahr aufbewahren
                                        • jährliche Sicherung über 5 Jahre aufbewahren
                                          D.h. da bin ich eigentlich safe.

                                      2.) und in dieses Backup sind genau auch die gemounteten Volumes der Docker-Container einbezogen

                                      3.) Konfigurationsdateien: meine Frage bezog sich jedoch auf weitere Konfig-Dateien, die ich jetzt nicht unbedingt nach außen mappen möchte, z.B.
                                      3.a) der o.g. Asterisk-Container: da müssen Datein reinkopiert werden an diese Stellen:
                                      /etc/asterisk/extensions
                                      /etc/asterisk/manager.co
                                      /etc/asterisk/sip.conf
                                      /etc/asterisk/rtp.conf

                                      3.b) beim Grafana-Container:
                                      Da muss eine bestehende config-Datei angepasst werden unter:

                                      usr/share/grafana/conf/

                                      Oder würdest du sagen, dass ich die Verzeichnisse /etc und /usr auch komplett nach "draußen" mounte?

                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @Chrisham last edited by OliverIO

                                        @chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:

                                        Konfigurationsdateien: meine Frage bezog sich jedoch auf weitere Konfig-Dateien, die ich jetzt nicht unbedingt nach außen mappen möchte, z.B.

                                        warum nicht?
                                        genau so funktioniert docker
                                        entweder named volumes definieren. dann liegt es irgendwo in den tiefen von docker, da ist schlecht ranzukommen für eine sicherung das eignet sich für dateien, die gut sind zur Laufzeit, wo es aber kein Problem ist, wenn die weg sind (bspw caches oder vorberechnete Daten, die aber jederzeit neu berechnet werden können. das hat dann ein Laufzeitgewinn und beschleunigt das redeployment eines container bspw nach releasewechsel

                                        oder per bindmount in ein selbst definiertes verzeichnis legen.

                                        @chrisham sagte in USB in Docker via neuer Container über Compose u.a. andere:

                                        Oder würdest du sagen, dass ich die Verzeichnisse /etc und /usr auch komplett nach "draußen" mounte?

                                        nein, das ist zuviel. genau die verzeichnisse oder einzelne dateien auswählen bei denen du selbst etwas konfigurierst und dann jeweils als separate zeile in die docker-config eintragen
                                        also eigentlich genau die auflistung die da oben schon gemacht hast.
                                        nur das du die erst definierst, dann den container neu generierst, dann liegen die dateien genau in den mount-verzeichnis auf deiner festplatte. dort kannst du sie dann ändern und den container neu starten. fertig

                                        sobald du an config-dateien was änderst und du den kompletten container neu generieren wills, sind die weg, weil ja bei jedem mal neu generieren die anwendung komplett neu isntalliert wird

                                        C 1 Reply Last reply Reply Quote 0
                                        • C
                                          Chrisham @OliverIO last edited by

                                          @oliverio ok, natürlich wieder ne Frage: wie geht das genau, nur ein einzelnes File zu mappen, google recherche hat das ergeben:

                                            grafana:
                                              network_mode: "host"
                                              restart: always
                                              image: grafana/grafana:latest
                                              container_name: grafana-7
                                              ports: 
                                                - "3000:3000"
                                              volumes:
                                                - /volume1/docker/grafana:/var/lib/grafana
                                                - /volume1/docker/grafana:/var/lib/grafana/plugins
                                                - type: volume
                                                  source: /volume1/docker/grafana/views/index.html
                                                  target: /usr/share/grafana/public/views/index.html/usr/share/grafana/public/views/index.html
                                                  
                                          

                                          Allerdings mit Fehlermeldung:
                                          2023-10-30_22h39_07.png

                                          OliverIO 1 Reply Last reply Reply Quote 0
                                          • OliverIO
                                            OliverIO @Chrisham last edited by OliverIO

                                            @chrisham

                                            https://stackoverflow.com/questions/42248198/how-to-mount-a-single-file-in-a-volume

                                            eigentlich genau wie verzeichnisse im schema
                                            <lokaler dateipfad>:<container dateipfad

                                            du hast jetzt versucht die langversion zu nehmen, das musst aber nicht.
                                            aber wenn dann wäre es wie folgt

                                                volumes:
                                                  - type: bind
                                                    source: /volume1/docker/grafana/views/index.html
                                                    target: /usr/share/grafana/public/views/index.html
                                            

                                            aber eigentlich reicht auch das

                                            volumes:
                                                  - /volume1/docker/grafana:/var/lib/grafana
                                                  - /volume1/docker/grafana:/var/lib/grafana/plugins
                                                  - /volume1/docker/grafana/views/index.html:/usr/share/grafana/public/views/index.html
                                            
                                            

                                            sehe gerade, bei target hast du es 2 mal hintereinander und type wäre bind

                                            C 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            711
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            8
                                            129
                                            10459
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo