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
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
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
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
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
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
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
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
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
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
Aufgrund von Netzwerkproblemen des Internetanbieters kann das Herunterladen von Images langsam erfolgen. Sie können hierfür Drittanbieter-Beschleunigungsdienste nutzen.