Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi im Docker-Container - revised

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • givemeone
    antwortet
    Hi,

    danke fürs Kommentar. Hier nochmals für interessierte
    eine korrigierte Version:

    Code:
    FROM starwarsfan/edomi-docker:amd64-latest
    
    #Install Mqtt
    RUN yum -y install gcc make \
    && yum -y install mosquitto mosquitto-devel php-devel \
    && cd /tmp \
    && git clone https://github.com/mgdm/Mosquitto-PHP \
    && cd Mosquitto-PHP \
    && phpize \
    && ./configure \
    && make \
    && make install \
    && echo 'extension=mosquitto.so' > /etc/php.d/50-mosquitto.ini \
    && cd[COLOR=#FF0000] ..[/COLOR] \
    && rm -rf Mosquitto-PHP \
    && yum [COLOR=#FF0000]-y[/COLOR] remove gcc make [COLOR=#FF0000]\[/COLOR]
    && yum [COLOR=#FF0000]-y [/COLOR]clean all
    Zitat von starwarsfan Beitrag anzeigen
    Hast Du mit Docker-Compose schonmal Multistage-Builds gemacht? Ich hatte damit (vor längerer Zeit) ziemlich Mühe...
    Nein, keine nennenswerten Erfolge. Habe dafür beruflich eine externe Firma engagiert.... leider.
    Wenn ich irgendwie doch helfen kann, würde ich mich aber gerne einbringen.

    Vielleicht reicht aber auch eine Aufteilung in unterschiedliche Dockerfiles, und Nutzung dieser
    im docker-compose.yml analog zu:

    Code:
    version: '2'
    services:
       edomi:
            build:
              dockerfile: Dockerfile
    #          dockerfile: DockerfileMQTT
    Über das ein/auskommentieren könnte man so auch größere oder eben auch kleinere Dockerfiles nutzen....


    sG Joe
    Zuletzt geändert von givemeone; 03.01.2020, 00:28.

    Einen Kommentar schreiben:


  • Willi will Knx
    antwortet
    Ah okay, vielen Dank. Und wenn ich den Container zwecks Datensicherung extern speichern möchte, funktioniert das dann mit
    docker commit -p [container-id] ? Habe auch mqtt LBSe laufen, jedoch auch noch Modbus etc, sodass mehrere Anpassungen notwendig sind.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hi Willi

    Zitat von Willi will Knx Beitrag anzeigen
    wenn ich den neuen Container ausprobiere, kann ich dann den bestehenden für alle Fälle mit
    docker commit -p [container-id] sichern? Vielen Dank
    Das hängt ein bisschen davon ab, wie genau Du das machst. Wenn Du das händisch via Konsole machst, dann kannst Du den vorhandenen Container einfach stoppen und einen zweiten mit identischen Parametern aber anderem Name und natürlich dem neuen Image parallel erzeugen und starten. Bei Verwendung von Management-Tools wie Portainer oder auf einer Synology geht das so nicht, da diese Tools Port-Konflikte anmeckern, selbst wenn der entsprechende Container gar nicht läuft.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hi Guido

    Zitat von Guidokoeller Beitrag anzeigen
    Ich versuche das dockerimage auf einer Qnap am laufen zu bekommen. Hat das schon jemand gechaft ? Was muss man in der NAS einstellen ? Porteinstellungen wie bei der Synology kann ich dort nicht finden.
    Mangels Qnap kann ich Dir da nicht helfen. Nix für ungut, aber ich sag mal RTFM! Du musst eben in der Doku des Qnap-Docker-Paketes (oder wie auch immer das auf Qnap heisst) nachlesen. Wenn man dort Docker-Container laufen lassen kann, dann muss es auch die Settings für Env-Vars, Ports, Volumes, Restart-Verhalten etc. pp. irgendwo geben.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hi,

    thx für den Vorschlag. Wer das so macht, sollte die roten Ergänzungen bzw. Änderungen beachten, um das Image in der Grösse schlanker zu halten. Die durchgestrichenen Pakete sind bereits im Image enthalten:

    Zitat von givemeone Beitrag anzeigen
    Mach einstweilen eine Datei mit dem Namen "Dockerfile" und diesem Inhalt:
    Code:
    FROM starwarsfan/edomi-docker:amd64-latest
    
    #Install Mqtt
    RUN yum -y install [S][COLOR=#FF0000]epel-release php-process git[/COLOR][/S] gcc make \
    && yum -y install mosquitto mosquitto-devel php-devel \
    && cd /tmp \
    && git clone https://github.com/mgdm/Mosquitto-PHP \
    && cd Mosquitto-PHP \
    && phpize \
    && ./configure \
    && make \
    && make install \
    && echo 'extension=mosquitto.so' > /etc/php.d/50-mosquitto.ini[COLOR=#FF0000] \[/COLOR]
    [COLOR=#FF0000]&& cd - \
    && rm -rf Mosquitto-PHP \
    && yum remove gcc make
    && yum clean all[/COLOR]

    Im Compose-File solltest Du vielleicht noch dazu schreiben, welcher Port welche Funktion hat, so für die c&p-Fraktion oder das Beispiel gleich auf die Standard-Konfig beschränken.

    Achja, einen Fehler hat's auch noch, siehe Änderung in rot:

    Zitat von givemeone Beitrag anzeigen
    und eine Datei "docker-compose.yml"
    Code:
    version: '2'
    services:
    edomi:
    build: .
    ports:
    - "127.0.0.1:80:80"
    - "127.0.0.1:443:443"
    - "127.0.0.1:10234:10234"
    - "7080:7080"
    - "3307:3306"
    - "50000:50000/udp"
    - "50001:50001/udp"
    environment:
    - KNXGATEWAY=172.20.0.1
    - KNXACTIVE=true
    restart: [S][COLOR=#FF0000]always[/COLOR][/S][COLOR=#FF0000] on-failure[/COLOR]
    container_name: edomi
    volumes:
    - /opt/docker-edomi/edomi-data/edomi-backups/:/var/edomi-backups/
    und starte das mit
    Code:
    docker-compose build && docker-compose up
    Damit baust Du die eine modifizierte Version des Images von Yves mit den Modulen für die MQTT-LBSe.
    Die anderen Werte wie Ports, etc. musst Du natürlich nach deinen Bedürftnissen anpassen!

    Ich bin am überlegen, gleich ein Compose-File mit in's Repo zu packen. Hast Du mit Docker-Compose schonmal Multistage-Builds gemacht? Ich hatte damit (vor längerer Zeit) ziemlich Mühe...

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hoi Markus

    Zitat von MKHR Beitrag anzeigen
    Wie sieht denn dein Plan bzgl. weiterer Pakete diverser LBS aus? Machst du das case-by-case basierend auf Eigenbedarf oder ist hier möglichst Breite Unterstützung geplant?
    Ich würde Bedarf an den MQTT Paketen (vor allem LBS 19001054) anmelden.
    Tendentiell schwebt mir eine möglichst breite Unterstützung vor, so dass das Image so weit wie möglich bereits alles mitbringt, was direkt auf dem System benötigt wird. Somit müsste man im Idealfall lediglich die gewünschten LBS's via Admin-UI hochladen und los geht's. Was ich aber mit grosser Wahrscheinlichkeit nicht machen werde, ist die gesamte gcc-make-Toolchain zu installieren. Wenn ich damit anfange, wird das Image explodieren. Ich bin am überlegen, wie sich soetwas elegant lösen lässt. Aktuell schwebt mir ein vorgelagerter Build-Container vor, in welchem sich die Toolchain befindet und installiert wird das Resultat dann im Ziel-Image.

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Hallo Markus

    Zitat von MKHR Beitrag anzeigen
    könntest du noch kurz den Pfad zur Logdatei angeben?
    Dann könnte ich verhindern, dass sie ins Backup läuft.
    Versteh' ich gerade nicht!? Die Logs liegen schon jeher unter /usr/local/edomi/www/data/log, etwas anderes gibt es nicht.

    Wenn Du Dich auf das neue Feature mit dem reduzierten Heartbeat beziehst, hast Du missverstanden, worum es geht. Edomi selbst loggt direkt auf die Konsole, da gibt es keine Datei. Das wird erst dann relevant, wenn Du Management-Tools wie Portainer verwendest, welche diesen Output selbst verwalten.

    Einen Kommentar schreiben:


  • Willi will Knx
    antwortet
    Hallo zusammen,
    wenn ich den neuen Container ausprobiere, kann ich dann den bestehenden für alle Fälle mit
    docker commit -p [container-id] sichern? Vielen Dank

    Einen Kommentar schreiben:


  • MKHR
    antwortet
    Telegram ist m.M.n bereits drin, MQTT entweder wie von givemeone vorgeschlagen oder manuell per ssh.
    Ausserdem den temporären workaround mit der proc_main.php beachten

    Einen Kommentar schreiben:


  • karino
    antwortet
    Super! Danke, dann werde ich es auch gelich versuchen.

    Nur final zu Klarstellung:

    1) Ich setze einen neuen Container basierend auf dem "starwarsfan/edomi-docker:amd64-latest"-Image auf
    2) Ich exportiere mein bisheriges Projekt aus CentOS 6.5 mit Edomi 2.0
    3) Ich importiere das Projekt im neuen Container
    4) Manuell LBS-Voraussetzungen nachziehen (MQTT, Telegram)

    Alles läuft wir bisher (nur auf CentOS 7) :-)

    Hab ich das so richtig verstanden?

    Danke und liebe Grüße,
    Karin

    Einen Kommentar schreiben:


  • jeff25
    antwortet
    Hi Karin,

    ja so ist es, habe es auch soeben neu installiert...

    gruß
    Robert

    Einen Kommentar schreiben:


  • givemeone
    antwortet
    Zitat von karino Beitrag anzeigen

    Hallo zusammen,

    kann mir jemand kurz schreiben, ob das neue Docker-Image ein Image basierend auf CentOS 7 mit Edomi 2 ist?

    Danke und viele Grüße,
    Karin
    Ja und ja.

    Einen Kommentar schreiben:


  • karino
    antwortet
    Zitat von karino Beitrag anzeigen

    Hallo Forum,

    ich wünsche Euch ein frohes, gesundes und erfolgreiches neues Jahr.

    Bei mir steht aufgrund mehrerer neuer LBS und gaert's Aussicht auf eine "Android-Visu" ein Upgrade des Betriebssystems an. Aktuell habe ich edomi per Docker (CENTOS 6.5) und Edomi 2.0 laufen. starwarsfan , verstehe ich es richtig, dass Dein neues Image ein feriges Edomi 2 basierend auf CentOS 7 ist? Wenn nein, wie setzt ihr dieses aktuell auf?

    Danke und viele Grüße,
    Karin
    Hallo zusammen,

    kann mir jemand kurz schreiben, ob das neue Docker-Image ein Image basierend auf CentOS 7 mit Edomi 2 ist?

    Danke und viele Grüße,
    Karin

    Einen Kommentar schreiben:


  • Guidokoeller
    antwortet
    Hallo zusammen. Ich versuche das dockerimage auf einer Qnap am laufen zu bekommen. Hat das schon jemand gechaft ? Was muss man in der NAS einstellen ? Porteinstellungen wie bei der Synology kann ich dort nicht finden.

    Einen Kommentar schreiben:


  • MKHR
    antwortet
    Danke für die Kurzanleitung, mir ging es aber eher um eine grundsätzliche Aussage von Yves.
    Also weniger "wie bekomme ich das gelöst", sondern eher "wie soll das in Zukunft gehandhabt werden".
    Die Umsetzung kann man ja dank github von allen Seiten beisteuern.

    Einen Kommentar schreiben:

Lädt...
X