Fork me on GitHub

Herr Knedel/Großartiges mit Containern: KPI Dashboard

Created Mon, 21 Mar 2022 00:00:00 +0000 Modified Sun, 27 Mar 2022 17:27:08 +0000 Schwierigkeitsgrad: Es kann etwas länger dauern

390 Words

Gerade in der Coronazeit, beim dezentralen Arbeiten sind aktuelle Informationen an allen Orten heiß gefragt. Ich selbst habe schon unzählige Informations-Systeme aufgestellt und möchte hier einmal eine tolle Software namens Smashing vorstellen. Referent: https://smashing.github.io/

Das Smashing-Projekt wurde ursprünglich unter dem Namen Dashing von der Firma Shopify für die Darstellung von Geschäftszahlen entwickelt. Aber man kann natürlich nicht nur Geschäftszahlen darstellen. Entwickler aus der ganzen Welt haben Smashing - Kacheln sogenannte Widgets für Gitlab, Jenkins, Bamboo, Jira usw. entwickelt, siehe: https://github.com/Smashing/smashing/wiki/Additional-Widgets

Doch wie arbeitet man nun damit?

Schritt 1: Basis-Image erstellen

Als erstes erstelle ich mir ein einfaches Docker-Image, dass bereits Ruby und Dashing mitbringt.

x
+
Terminal

$ mkdir dashing-project
$ cd dashing-project
$ mkdir dashboard
$ vim Dockerfile

Das ist der erste Inhalt, den ich in die Dockerfile-Datei schreibe:

From ubuntu:latest
 
ENV TZ=Europe/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

COPY dashboard/ /code/

RUN apt-get update && apt-get install -y ruby wget unzip ruby-dev build-essential tzdata nodejs && \
gem install smashing && \
apt-get clean

Danach erzeuge ich das Docker-Image mit diesem Befehl:

x
+
Terminal

$ docker build -t my-dashboard:latest .

So sieht das bei mir aus:

Schritt 2: Dashboard erstellen

Nun kann ich mit dem folgenden Befehl ein neues Dashboard erstellen:

x
+
Terminal

$ docker run -it -v /path/to/my/dashing-project:/code my-dashboard:latest smashing new dashboard

Danach sollte der “dashboard-Ordner im Dashing-Project wie folgt aussehen:

Sehr gut! Nun muss ich noch einmal das Dockerfile updaten. Der neue Inhalt ist dieser:

From ubuntu:latest
 
ENV TZ=Europe/Berlin
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 
COPY dashboard/ /code/
 
RUN apt-get update && apt-get install -y ruby wget unzip ruby-dev build-essential tzdata nodejs && \
gem install smashing && \
gem install bundler && \
apt-get clean
 
RUN cd /code/ && \
bundle
 
RUN chown -R www-data:www-data  /code/

USER www-data
WORKDIR /code/

EXPOSE 3030

CMD ["/usr/local/bin/bundle", "exec", "puma", "config.ru"]

Außerdem muss auch die Gemfile-Datei im “dashboard”-Ordner angepasst werden:

source 'https://rubygems.org'

gem 'smashing'
gem 'puma'

Ich wiederhole den Build-Befehl:

x
+
Terminal

$ docker build -t my-dashboard:latest .

Jetzt kann ich mein neues Dashboard zum ersten Mal starten und unter http://localhost:9292 aufrufen.
x
+
Terminal

$ docker run -it -p 9292:9292 my-dashboard:latest

Und so sieht es aus: Das ist die Grundlage für ein gutes Informationssystem. Man kann alle Farbe, Skripte und Widgets anpassen.