howto:docker
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
howto:docker [2021/03/28 20:49] – angelegt itchy2 | howto:docker [2021/07/27 21:38] (aktuell) – [offene Punkte] itchy2 | ||
---|---|---|---|
Zeile 27: | Zeile 27: | ||
sed -i ' | sed -i ' | ||
- | In der options.js | + | In der options.js |
- | < | + | In der options.js |
+ | |||
+ | < | ||
+ | }, { | ||
+ | title: ' | ||
+ | url: ' | ||
+ | </ | ||
+ | |||
+ | < | ||
Die Dateien config.dist.yaml und ggf. options.js werden nach der Modifikation in einem neuen Order erstellt. In diesem Ordner erstellen wir ebenfalls jetzt das Dockerfile mit folgendem Inhalt: < | Die Dateien config.dist.yaml und ggf. options.js werden nach der Modifikation in einem neuen Order erstellt. In diesem Ordner erstellen wir ebenfalls jetzt das Dockerfile mit folgendem Inhalt: < | ||
Zeile 64: | Zeile 72: | ||
+ | =====Aggregationen über die Middleware===== | ||
+ | Für die Aggregation über die benötigt man einen Job-Scheduler. Genau dieser Scheduler kann eine große Herausforderung sein. Es gibt verschiedene Lösungsansätze hierfür. In dieser Beschreibung wurde eine Lösung über Jobber verwendet. | ||
+ | |||
+ | ====Jobber==== | ||
+ | |||
+ | Das Dockerfile sieht wie folgt aus: | ||
+ | |||
+ | < | ||
+ | FROM jobber: | ||
+ | # Download latest listing of available packages: | ||
+ | User root | ||
+ | |||
+ | RUN apk add --no-cache mysql-client openssh | ||
+ | |||
+ | #Copy of SSH Keys | ||
+ | User jobberuser | ||
+ | RUN mkdir -p / | ||
+ | COPY id_rsa / | ||
+ | COPY id_rsa.pub / | ||
+ | |||
+ | #Adjust SSH Config | ||
+ | User root | ||
+ | RUN chown -R jobberuser: | ||
+ | RUN echo "Host *" >> / | ||
+ | RUN echo " | ||
+ | |||
+ | User jobberuser | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | <note important> | ||
+ | |||
+ | Die Berechtigungen für die Jobber-Verzeichnisse, | ||
+ | < | ||
+ | sudo chown 1000:1000 < | ||
+ | sudo chmod 0744 < | ||
+ | </ | ||
+ | |||
+ | Innerhalb des Docker Jobber Containers muss das .jobber File (im Home Verzeichnis vom jobberuser) wie folgt für die Aggregationen erweitert werden: | ||
+ | |||
+ | < | ||
+ | - name: VZ_AGG_DAY | ||
+ | cmd: / | ||
+ | time: '0 0 1 *' | ||
+ | onError: Backoff | ||
+ | | ||
+ | - name: VZ_AGG_HOUR | ||
+ | cmd: / | ||
+ | time: '0 1 *' | ||
+ | onError: Backoff | ||
+ | | ||
+ | - name: VZ_AGG_MINUTE | ||
+ | cmd: / | ||
+ | time: '0 */10' | ||
+ | onError: Backoff | ||
+ | </ | ||
+ | |||
+ | Das .jobber File ist die Konfiguration des Schedulers. Damit werden in diesem Fall Shell-Skripte aufgerufen. | ||
+ | |||
+ | Minimal-Inhalt der Shell-Skripte: | ||
+ | |||
+ | |||
+ | < | ||
+ | #/ | ||
+ | ssh root@volkszaehler << EOF | ||
+ | php / | ||
+ | exit | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | #/ | ||
+ | ssh root@volkszaehler << EOF | ||
+ | php / | ||
+ | exit | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | #/ | ||
+ | if [ -f / | ||
+ | then | ||
+ | echo " | ||
+ | exit 1 | ||
+ | else | ||
+ | | ||
+ | fi | ||
+ | |||
+ | ssh root@volkszaehler << EOF | ||
+ | php / | ||
+ | exit | ||
+ | EOF | ||
+ | |||
+ | rm / | ||
+ | </ | ||
+ | < | ||
+ | |||
+ | ====Volkszaehler Docker anpassen==== | ||
+ | Das minimalistische Volklszaehler Dockerfile muss für das Zusammenspiel mit Jobber erweitert werden: | ||
+ | |||
+ | < | ||
+ | FROM volkszaehler/ | ||
+ | |||
+ | #SSH Server | ||
+ | RUN apk add --no-cache openssh | ||
+ | |||
+ | #RC-Service | ||
+ | RUN apk add --no-cache openrc | ||
+ | RUN rc-update add sshd | ||
+ | |||
+ | #Global Config for SSH and RC-Service | ||
+ | RUN ssh-keygen -A | ||
+ | RUN rc-status | ||
+ | RUN touch / | ||
+ | |||
+ | #Transfer SSH Key | ||
+ | RUN mkdir -p /root/.ssh | ||
+ | COPY id_rsa.pub / | ||
+ | |||
+ | RUN echo "Host *" >> / | ||
+ | RUN echo " | ||
+ | |||
+ | #define root password to get ssh access to work | ||
+ | RUN echo " | ||
+ | |||
+ | #ENTRYPOINT ssh-keygen -A && rc-status && touch / | ||
+ | ENTRYPOINT / | ||
+ | |||
+ | |||
+ | COPY config.dist.yaml / | ||
+ | COPY options.js / | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | In dem Verzeichnis des Dockerfiles muss der PUBLIC SSH KEY vorhanden sein. | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | ====Docker Compose File==== | ||
+ | Ein fertiges Docker Compose File könnte wie folgt aussehen: | ||
+ | |||
+ | < | ||
+ | version: ' | ||
+ | |||
+ | mysqldb: | ||
+ | image: mysql | ||
+ | container_name: | ||
+ | command: --default-authentication-plugin=mysql_native_password | ||
+ | restart: always | ||
+ | ports: | ||
+ | - 3306:3306 | ||
+ | - 33060:33060 | ||
+ | volumes: | ||
+ | - < | ||
+ | - < | ||
+ | |||
+ | volkszaehler: | ||
+ | image: volkszaehler_ssh: | ||
+ | container_name: | ||
+ | ports: | ||
+ | - 8080:8080 | ||
+ | - 8082:8082 | ||
+ | - 5582:5582 | ||
+ | depends_on: | ||
+ | - mysqldb | ||
+ | links: | ||
+ | - mysqldb | ||
+ | restart: always | ||
+ | |||
+ | jobber_mysql_ssh: | ||
+ | image: jobber_mysql_ssh: | ||
+ | container_name: | ||
+ | restart: always | ||
+ | volumes: | ||
+ | - < | ||
+ | </ | ||
=====offene Punkte===== | =====offene Punkte===== | ||
- | * Aggregationen in der Middleware | ||
* Mapping der Config-Files ohne erneutes Docker Build | * Mapping der Config-Files ohne erneutes Docker Build | ||
- | * Deaktivierung Volkszaehler Demo Kanäle | ||
* Überprüfung des Ansatzes für den Push-Server | * Überprüfung des Ansatzes für den Push-Server |
howto/docker.1616957355.txt.gz · Zuletzt geändert: 2021/03/28 20:49 von itchy2