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: von itchy2