Es soll ja um Feedback gehen, also was ich mir so aufgefallen ist...
Das erste ist: Wie lasse ich das denn laufen? Noch einen Raspi gerade rumfliegen habe ich nicht. Und es erscheint mir auch unnötig aufwendig extra gesonderte Hardware aufzubauen nur um da mal reinzuschauen und ein bißchen mit rumzuspielen. Die Software kann einfach lokal auf meinem Computer laufen. In einem Docker-Container zum Beispiel.
Habe ich mir so gedacht. War kompliziert. Die install-Script konnte ich nicht nehmen, weil die zu Raspberry-spezifisch waren. Ich musste meinen eigenen Kram zurecht basteln.
Ich habe mir dann eine Datei `run-within-docker.sh` gebastelt:
Code: Alles auswählen
service apache2 start
mosquitto -c /var/www/html/openWB/data/config/mosquitto_local.conf -v &
sleep 1
mosquitto -c /var/www/html/openWB/data/config/openwb_local.conf -v &
sleep 1
mosquitto_pub -p 1886 -t openWB/system/update_in_progress -r -m 'false'
mosquitto_pub -p 1883 -t openWB/system/update_in_progress -r -m 'false'
mosquitto_pub -p 1886 -t openWB/system/boot_done -r -m 'true'
mosquitto_pub -p 1883 -t openWB/system/boot_done -r -m 'true'
mosquitto_pub -t openWB/system/reloadDisplay -m "1"
touch /var/www/html/openWB/ramdisk/bootdone
sudo -u pi /var/www/html/openWB/packages/main.py
Und dazu ein Dockerfile:
Code: Alles auswählen
FROM debian:bullseye
RUN apt update && \
apt install -y sudo curl iproute2 vim bc apache2 php php-gd php-curl php-xml php-json libapache2-mod-php jq git mosquitto mosquitto-clients socat python3-pip sshpass
RUN useradd -m pi && \
mkdir /var/www/html/openWB /run/mosquitto && \
chown pi:pi /var/www/html/openWB && \
chown mosquitto:mosquitto /run/mosquitto && \
sudo -u pi git clone https://github.com/openWB/core.git --branch master /var/www/html/openWB && \
sudo -u pi pip install -r /var/www/html/openWB/requirements.txt && \
chmod +x /var/www/html/openWB/runs/* /var/www/html/openWB/*.sh && \
touch /var/log/openWB.log && \
chmod 777 /var/log/openWB.log && \
cp /var/www/html/openWB/data/config/000-default.conf /etc/apache2/sites-available/ && \
sed -i '/^include_dir/d' /var/www/html/openWB/data/config/mosquitto_local.conf && \
sed -i 's/^listener .*/listener 1886 127.0.0.1/' /var/www/html/openWB/data/config/openwb_local.conf && \
cat /var/www/html/openWB/data/config/openwb.conf >> /var/www/html/openWB/data/config/mosquitto_local.conf && \
sudo -u pi mkdir /var/www/html/openWB/ramdisk && \
sed -i '12d;96,106d;107i\ return []' /var/www/html/openWB/packages/modules/loadvars.py && \
cp /var/www/html/openWB/index.html /var/www/html/index.html
COPY run-within-docker.sh /var/www/html/openWB/
CMD ["/bin/bash", "/var/www/html/openWB/run-within-docker.sh"]
# Http
EXPOSE 80
# MQTT
EXPOSE 1883
# MQTT Websocket
EXPOSE 9001
Das dann gebaut mit:
Und ausgeführt mit:
Code: Alles auswählen
sudo docker run -p 7080:80 -p 1883:1883 -p 9001:9001 -it openwb2
Siehe da, ich kann mit dem Browser auf
http://localhost:7080 gehen und ich sehe ein bißchen was
.
Allerdings ist das ein fragiles Konstrukt mit meinen Änderungen die ich im Dockerfile einfach mal so mit sed hier und da durchführe. Es wäre schon toll / sinnvoll, das ganze etwas kompatibler zu gestalten.
Ich frage mich etwas wie ihr das eigentlich testet, was ihr bastelt. Kopiert ihr bei jeder Änderung alles auf einen Raspberry und führt es da aus? Also klar ist eine Möglichkeit, aber man muss dann immer einen Raspberry zur Hand haben. Und man muss den Code ständig syncen. Wenn man was verkonfiguriert hat muss man (je nachdem wie schlimm es ist, was man verzapft hat) die komplette SD-Karte vom Raspberry zurücksetzen. Ja, geht alles, kann man auch automatisieren, aber so eine schöne lokale Umgebung die man kurz auf seinem Computer direkt laufen lässt ist doch viel einfacher?!
Docker läuft auch auf dem Raspberry. Ich würde sogar in Erwägung ziehen die Software selbst dort in einem Docker-Container laufen zu lassen. Dann hat man eine immer gleiche Umgebung die überall funktioniert. (naja gut, "immer und überall" ist vielleicht etwas sehr optimistisch, Docker hat schließlich auch seine Limitierungen, aber man kommt dem Ziel schon ganz schön nah).
Was mir noch auffällt ist, dass das Repo sehr groß ist. In etwa 100 MB. Gut, das alte Repo war noch größer, aber das ist keine Ausrede
. Größte Datei war offenbar ein versehentlich hinzugefügtes Backup in commit 017748b251b90241d228971a7b1e4a4ed09ff967 mit 26 MB. Das Repository könnte man also um 25% verkleinern, wenn man diese Datei rückwirkend rauswerfen würde
.
Dass die kompilierte Webseite da drin ist, wird der Größe des Repositories jedenfalls nicht unbedingt gut tun, weil hier große Diffs entstehen die sich nicht gut kompilieren lassen und ist meines Erachtens auch keine gute Idee. So gesehen finde ich bei kritischer Betrachtung die Idee einfach "git clone" zu verwenden generell nicht optimal. Aber gut, es funktioniert.
Es sind offenbar noch diverse alte (Frontend-)Skripte vorhanden bei denen ich davon ausgehe, dass die nicht mehr gebraucht werden?! Ich habe da noch nicht ganz geblickt.
Es sind auch noch jede Menge PHP-Dateien da. Und Apache wird verwendet. Ich nehme an das fliegt noch alles raus? Ich blicke nicht ganz ob das tatsächlich noch verwendet wird. Für die Übersicht wäre es jedenfalls schön, wenn nurnoch Code im Repo ist, der auch gebraucht wird....