Zum Hauptinhalt springen

Docker unter Linux/macOS

In diesem Handbuch stellen Sie MyEMS mit Docker unter Linux (oder macOS) bereit.

Voraussetzungen

  • Docker und npm sind auf dem Host installiert.
  • MySQL-Server ist installiert.
  • Auf die MySQL-Datenbank kann von dem Host, auf dem die Docker-Engine läuft, zugegriffen werden.
  • Hardwareanforderungen: Mindestens 4 GB RAM, 20 GB Speicherplatz (für Datenbank und Docker-Container).

Quellcode klonen:

cd ~
git clone https://github.com/myems/myems.git

Schritt 1 Datenbank

Siehe Datenbank

Schritt 2 myems-api

In diesem Abschnitt installieren Sie myems-api mit Docker.

  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-api /
cd /myems-api
  • .env-Datei anhand der example.env-Datei erstellen
Vorsicht

Ersetzen Sie manuell 127.0.0.1 durch die tatsächliche HOST-IP-Adresse.

cp example.env .env
  • Image aus dem Quellcode erstellen
docker build -t myems/myems-api .

Wenn Sie für mehrere Plattformen bauen möchten und nicht nur für die Architektur und das Betriebssystem, auf dem der Build ausgeführt wird, können Sie buildx verwenden und das --platform-Flag setzen, um die Zielplattform für das Build-Ergebnis anzugeben (z. B. linux/amd64, linux/arm64 oder darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Docker-Container starten Auf dem Host einen gemeinsamen Upload-Ordner erstellen:
mkdir /myems-upload

Container erstellen, gemeinsamen Ordner an den Container mounten und .env ebenfalls an den Container mounten:

docker run -d -p 8000:8000 -v /myems-upload:/var/www/myems-admin/upload -v /myems-api/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-api myems/myems-api
  • -d Container im Hintergrund ausführen und Container-ID ausgeben
  • -p Port(s) des Containers an den Host weiterleiten; 8000:8000 (Host:Container) bindet Port 8000 (rechts) des Containers an TCP-Port 8000 (links) des Hosts.
  • -v Bei Verwendung von -v oder --volume zum Einbinden einer Datei oder eines Ordners, der noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch – immer als Ordner. Die Option ro sorgt dafür, dass das Einbindungsverzeichnis schreibgeschützt in den Container gemountet wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
  • --log-opt max-size=2m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus Einheit (k, m oder g).
  • --log-opt max-file=2 Maximale Anzahl vorhandener Logdateien. Bei Überschreitung wird die älteste Datei gelöscht. Eine positive ganze Zahl.
  • --restart Neustart-Richtlinie, die angewendet wird, wenn ein Container beendet wird.
  • --name Einen Namen dem Container zuweisen.

Der absolute Pfad vor dem Doppelpunkt gilt für den Host und kann bei Ihnen abweichen; der Pfad nach dem Doppelpunkt gilt für den Container und darf nicht geändert werden. Durch das Einbinden der .env-Datei können Sie Konfigurationswerte später ändern – nach einer Änderung den Container neu starten, damit die Änderungen wirksam werden.

Wenn Sie das Image auf einen anderen Computer übertragen möchten:

  • Image in Tar-Datei exportieren
docker save --output myems-api.tar myems/myems-api
  • Tar-Datei auf anderen Computer kopieren und Image daraus laden
docker load --input .\myems-api.tar

Schritt 3 myems-admin

In diesem Abschnitt installieren Sie myems-admin mit Docker.

  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-admin /
cd /myems-admin
Vorsicht

Ersetzen Sie manuell 127.0.0.1:8000 in nginx.conf durch die tatsächliche HOST-IP-Adresse und den Port von myems-api.

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Image aus dem Quellcode erstellen
docker build -t myems/myems-admin .

Wenn Sie für mehrere Plattformen bauen möchten, verwenden Sie buildx mit dem --platform-Flag (z. B. linux/amd64, linux/arm64 oder darwin/amd64):

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Docker-Container starten Auf dem Host einen gemeinsamen Upload-Ordner erstellen:
mkdir /myems-upload

Container erstellen, gemeinsamen Upload-Ordner und nginx.conf an den Container mounten:

docker run -d -p 8001:8001 -v /myems-upload:/var/www/myems-admin/upload -v /myems-admin/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-admin myems/myems-admin
  • -d Container im Hintergrund ausführen und Container-ID ausgeben
  • -p Port 8001 des Containers an Port 8001 des Hosts weiterleiten.
  • -v Einbinden von Dateien/Ordnern; Option ro = schreibgeschützt. Für Versionen ≤ 4.7.0 '/code/.env' statt '/app/.env' verwenden.
  • --log-opt max-size=2m Maximale Loggröße vor Rollover.
  • --log-opt max-file=2 Maximale Anzahl von Logdateien.
  • --restart Neustart-Richtlinie bei Container-Ausfall.
  • --name Containernamen vergeben.

Wenn Sie das Image auf einen anderen Computer übertragen möchten:

  • Image in Tar-Datei exportieren
docker save --output myems-admin.tar myems/myems-admin
  • Tar-Datei kopieren und Image laden
docker load --input .\myems-admin.tar

Schritt 4 myems-modbus-tcp

In diesem Abschnitt installieren Sie myems-modbus-tcp mit Docker.

  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • .env-Datei anhand der example.env-Datei erstellen
Vorsicht

Ersetzen Sie manuell 127.0.0.1 durch die tatsächliche HOST-IP-Adresse.

cp example.env .env
  • Image aus dem Quellcode erstellen
docker build -t myems/myems-modbus-tcp .

Für mehrere Plattformen bauen:

docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Docker-Container starten (als Superuser ausführen)
docker run -d -v /myems-modbus-tcp/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-modbus-tcp myems/myems-modbus-tcp
  • -d Container im Hintergrund ausführen
  • -v .env-Datei schreibgeschützt einbinden; für Versionen ≤ 4.7.0 '/code/.env' verwenden.
  • --log-opt Log-Konfigurationen für Größe und Dateianzahl.
  • --restart Automatischer Neustart bei Ausfall.
  • --name Containernamen vergeben.

Der Pfad vor dem Doppelpunkt gilt für den Host (individuell), der Pfad danach für den Container (fest). Änderungen an .env erfordern einen Container-Neustart, um wirksam zu werden.

  • Container auf anderen Computer übertragen
  • Image exportieren
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Image auf anderem Computer laden
docker load --input .\myems-modbus-tcp.tar

Schritt 5 myems-cleaning

In diesem Abschnitt installieren Sie myems-cleaning mit Docker.

  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • .env-Datei anhand der example.env-Datei erstellen
Vorsicht

Ersetzen Sie manuell 127.0.0.1 durch die tatsächliche HOST-IP-Adresse.

cp example.env .env
  • Image aus dem Quellcode erstellen
docker build -t myems/myems-cleaning .

Für mehrere Plattformen bauen:

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Docker-Container starten (als Superuser ausführen)
docker run -d -v /myems-cleaning/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-cleaning myems/myems-cleaning
  • Pfad vor Doppelpunkt = Host (individuell), Pfad danach = Container (fest). Änderungen an .env erfordern Container-Neustart.

  • Container auf anderen Computer übertragen

  • Image exportieren

docker save --output myems-cleaning.tar myems/myems-cleaning
  • Image laden
docker load --input .\myems-cleaning.tar

Schritt 6 myems-normalization

In diesem Abschnitt installieren Sie myems-normalization mit Docker.

  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-normalization /
cd /myems-normalization
  • .env-Datei anhand der example.env-Datei erstellen
Vorsicht

Ersetzen Sie manuell 127.0.0.1 durch die tatsächliche HOST-IP-Adresse.

cp example.env .env
  • Image aus dem Quellcode erstellen
docker build -t myems/myems-normalization .

Für mehrere Plattformen bauen:

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Docker-Container starten (als Superuser ausführen)
docker run -d -v /myems-normalization/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-normalization myems/myems-normalization
  • Änderungen an .env erfordern einen Container-Neustart, um wirksam zu werden.

  • Container auf anderen Computer übertragen

  • Image exportieren

docker save --output myems-normalization.tar myems/myems-normalization
  • Image laden
docker load --input .\myems-normalization.tar

Schritt 7 myems-aggregation

In diesem Abschnitt installieren Sie myems-aggregation mit Docker.

  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • .env-Datei anhand der example.env-Datei erstellen
cp example.env .env
Vorsicht

Ersetzen Sie manuell 127.0.0.1 durch die tatsächliche HOST-IP-Adresse.

  • Image aus dem Quellcode erstellen
docker build -t myems/myems-aggregation .

Für mehrere Plattformen bauen:

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Docker-Container starten (als Superuser ausführen)
docker run -d -v /myems-aggregation/.env:/app/.env:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-aggregation myems/myems-aggregation
  • Änderungen an .env erfordern einen Container-Neustart.

  • Container auf anderen Computer übertragen

  • Image exportieren

docker save --output myems-aggregation.tar myems/myems-aggregation
  • Image laden
docker load --input .\myems-aggregation.tar

Schritt 8 myems-web

In diesem Abschnitt installieren Sie myems-web mit Docker.

  • Config.js-Datei bearbeiten
Hinweis

Holen Sie sich einen MapboxToken unter https://mapbox.com und setzen Sie anschließend showOnlineMap auf true. Wenn Sie die Online-Kartenfunktion deaktivieren möchten, setzen Sie showOnlineMap auf false.

cd myems/myems-web
nano src/config.js
  • Nginx.conf-Datei bearbeiten
Vorsicht

Ersetzen Sie 127.0.0.1:8000 in nginx.conf durch die tatsächliche HOST-IP-Adresse und den Port von myems-api.

cd myems/myems-web
nano nginx.conf
  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-web /
cd /myems-web
Info

Der Befehl 'npm run build' kann hier ignoriert werden, da er bereits im Dockerfile enthalten ist.

  • Image aus dem Quellcode erstellen
docker build -t myems/myems-web .
docker image prune -f

Für mehrere Plattformen bauen:

docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
  • Docker-Container starten, nginx.conf einbinden
docker run -d -p 80:80 -v /myems-web/nginx.conf:/etc/nginx/nginx.conf:ro --log-opt max-size=1m --log-opt max-file=2 --restart always --name myems-web myems/myems-web
  • -p Port 80 des Containers an Port 80 des Hosts weiterleiten.

Wenn Sie das Image auf einen anderen Computer übertragen möchten:

  • Image exportieren
docker save --output myems-web.tar myems/myems-web
  • Image laden
docker load --input .\myems-web.tar

Nach der Installation

Herzlichen Glückwunsch! Sie können sich jetzt bei der MyEMS Admin UI und der Web UI anmelden.

Standardports

MyEMS Web UI: 80 MyEMS API: 8000 MyEMS Admin UI: 8001

Vorausgesetzt, die Serveradresse lautet 192.168.1.8 (durch tatsächliche Serveradresse ersetzen): Zugriff auf MyEMS Web UI unter http://192.168.1.8 (Port 80 kann weggelassen werden) Zugriff auf MyEMS Admin UI unter http://192.168.1.8:8001

Standardpasswörter

MyEMS Admin UI Benutzername:

administrator

Passwort:

!MyEMS1

MyEMS Web UI Benutzername:

administrator@myems.io

Passwort:

!MyEMS1

Fehlerbehebung

Behebung von Timeout-Problemen beim Image-Pull

Aufgrund von Netzwerkproblemen des Internetanbieters kann das Herunterladen von Images langsam erfolgen. Sie können hierfür Drittanbieter-Beschleunigungsdienste nutzen.