Docker unter Linux/macOS
In dieser Anleitung stellen Sie MyEMS mit Docker unter Linux (oder macOS) bereit.
Voraussetzungen
- Docker und npm sind auf dem Host installiert.
- Ein MySQL-Server ist installiert.
- Die MySQL-Datenbank kann vom Host aus erreicht werden, auf dem die Docker Engine ausgeführt wird.
- Hardwareanforderungen: Mindestens 4 GB RAM, 20 GB Speicherplatz (für Datenbank und Docker-Container).
Quellcode klonen:
cd ~
git clone https://github.com/myems/myems
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 .
Um Images für mehrere Plattformen zu erstellen und nicht nur für die Architektur und das Betriebssystem, auf dem der Build-Befehl 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 .
- Einen Docker-Container ausführen
Auf dem Host einen gemeinsamen Upload-Ordner erstellen:
mkdir /myems-upload
Einen Container erstellen, den gemeinsamen Ordner an den Container mounten und die .env-Datei 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 die Container-ID ausgeben
-
-p Einen oder mehrere Ports des Containers an den Host weiterleiten. Die Angabe 8000:8000 (Host:Container) bindet Port 8000 (rechts) des Containers an TCP-Port 8000 (links) des Host-Systems.
-
-v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch. Dieser wird immer als Verzeichnis angelegt. Die Option ro sorgt dafür, dass der gemountete Speicherbereich im Container schreibgeschützt eingehängt wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
-
--log-opt max-size=2m Die maximale Größe des Logs, bevor ein neues Logfile erstellt wird. Eine positive ganze Zahl zusammen mit einem Einheitenkennzeichen (k, m oder g).
-
--log-opt max-file=2 Die maximale Anzahl an Logfiles, die vorhanden sein dürfen. Wenn das Erstellen neuer Logfiles zu viele Dateien erzeugt, wird die älteste Datei gelöscht. Eine positive ganze Zahl.
-
--restart Die Richtlinie für das Neustarten des Containers bei Beendigung.
-
--name Einen Namen für den Container zuweisen.
Der absolute Pfad vor dem Doppelpunkt bezieht sich auf den Pfad auf dem Host und kann je nach System variieren. Der absolute Pfad nach dem Doppelpunkt bezieht sich auf den Pfad im Container und darf nicht geändert werden. Indem Sie die .env-Datei als Mount-Parameter übergeben, können Sie die Konfigurationswerte später ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
Wenn Sie das Image auf einen anderen Computer übertragen möchten:
- Image in eine Tar-Datei exportieren
docker save --output myems-api.tar myems/myems-api
- Die Tar-Datei auf einen anderen Computer kopieren und dann das Image aus der Tar-Datei 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 der 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 .
Um Images für mehrere Plattformen zu erstellen und nicht nur für die Architektur und das Betriebssystem, auf dem der Build-Befehl 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-admin .
- Einen Docker-Container ausführen
Auf dem Host einen gemeinsamen Upload-Ordner erstellen:
mkdir /myems-upload
Einen Container erstellen, den gemeinsamen Upload-Ordner an den Container mounten und die nginx.conf ebenfalls 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 die Container-ID ausgeben
-
-p Einen oder mehrere Ports des Containers an den Host weiterleiten. Die Angabe 8001:8001 (Host:Container) bindet Port 8001 (rechts) des Containers an TCP-Port 8001 (links) des Host-Systems.
-
-v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch. Dieser wird immer als Verzeichnis angelegt. Die Option ro sorgt dafür, dass der gemountete Speicherbereich im Container schreibgeschützt eingehängt wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
-
--log-opt max-size=2m Die maximale Größe des Logs, bevor ein neues Logfile erstellt wird. Eine positive ganze Zahl zusammen mit einem Einheitenkennzeichen (k, m oder g).
-
--log-opt max-file=2 Die maximale Anzahl an Logfiles, die vorhanden sein dürfen. Wenn das Erstellen neuer Logfiles zu viele Dateien erzeugt, wird die älteste Datei gelöscht. Eine positive ganze Zahl.
-
--restart Die Richtlinie für das Neustarten des Containers bei Beendigung.
-
--name Einen Namen für den Container zuweisen.
Wenn Sie das Image auf einen anderen Computer übertragen möchten:
- Image in eine Tar-Datei exportieren
docker save --output myems-admin.tar myems/myems-admin
- Die Tar-Datei auf einen anderen Computer kopieren und dann das Image aus der Tar-Datei 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 .
Um Images für mehrere Plattformen zu erstellen und nicht nur für die Architektur und das Betriebssystem, auf dem der Build-Befehl 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-modbus-tcp .
- Einen Docker-Container ausführen (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 und die Container-ID ausgeben
-
-v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch. Dieser wird immer als Verzeichnis angelegt. Die Option ro sorgt dafür, dass der gemountete Speicherbereich im Container schreibgeschützt eingehängt wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
-
--log-opt max-size=2m Die maximale Größe des Logs, bevor ein neues Logfile erstellt wird. Eine positive ganze Zahl zusammen mit einem Einheitenkennzeichen (k, m oder g).
-
--log-opt max-file=2 Die maximale Anzahl an Logfiles, die vorhanden sein dürfen. Wenn das Erstellen neuer Logfiles zu viele Dateien erzeugt, wird die älteste Datei gelöscht. Eine positive ganze Zahl.
-
--restart Die Richtlinie für das Neustarten des Containers bei Beendigung.
-
--name Einen Namen für den Container zuweisen.
Der absolute Pfad vor dem Doppelpunkt bezieht sich auf den Pfad auf dem Host und kann je nach System variieren. Der absolute Pfad nach dem Doppelpunkt bezieht sich auf den Pfad im Container und darf nicht geändert werden. Indem Sie die .env-Datei als Mount-Parameter übergeben, können Sie die Konfigurationswerte später ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
- Docker-Container übertragen
Um den Container auf einen anderen Computer zu übertragen:
- Image in eine Tar-Datei exportieren
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Die Tar-Datei auf einen anderen Computer kopieren und dann das Image aus der Tar-Datei 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 .
Um Images für mehrere Plattformen zu erstellen und nicht nur für die Architektur und das Betriebssystem, auf dem der Build-Befehl 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-cleaning .
- Einen Docker-Container ausführen (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
-
-d Container im Hintergrund ausführen und die Container-ID ausgeben
-
-v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch. Dieser wird immer als Verzeichnis angelegt. Die Option ro sorgt dafür, dass der gemountete Speicherbereich im Container schreibgeschützt eingehängt wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
-
--log-opt max-size=2m Die maximale Größe des Logs, bevor ein neues Logfile erstellt wird. Eine positive ganze Zahl zusammen mit einem Einheitenkennzeichen (k, m oder g).
-
--log-opt max-file=2 Die maximale Anzahl an Logfiles, die vorhanden sein dürfen. Wenn das Erstellen neuer Logfiles zu viele Dateien erzeugt, wird die älteste Datei gelöscht. Eine positive ganze Zahl.
-
--restart Die Richtlinie für das Neustarten des Containers bei Beendigung.
-
--name Einen Namen für den Container zuweisen.
Der absolute Pfad vor dem Doppelpunkt bezieht sich auf den Pfad auf dem Host und kann je nach System variieren. Der absolute Pfad nach dem Doppelpunkt bezieht sich auf den Pfad im Container und darf nicht geändert werden. Indem Sie die .env-Datei als Mount-Parameter übergeben, können Sie die Konfigurationswerte später ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
- Docker-Container übertragen
Um den Container auf einen anderen Computer zu übertragen:
- Image in eine Tar-Datei exportieren
docker save --output myems-cleaning.tar myems/myems-cleaning
- Die Tar-Datei auf einen anderen Computer kopieren und dann das Image aus der Tar-Datei 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 .
Um Images für mehrere Plattformen zu erstellen und nicht nur für die Architektur und das Betriebssystem, auf dem der Build-Befehl 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-normalization .
- Einen Docker-Container ausführen (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
-
-d Container im Hintergrund ausführen und die Container-ID ausgeben
-
-v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch. Dieser wird immer als Verzeichnis angelegt. Die Option ro sorgt dafür, dass der gemountete Speicherbereich im Container schreibgeschützt eingehängt wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
-
--log-opt max-size=2m Die maximale Größe des Logs, bevor ein neues Logfile erstellt wird. Eine positive ganze Zahl zusammen mit einem Einheitenkennzeichen (k, m oder g).
-
--log-opt max-file=2 Die maximale Anzahl an Logfiles, die vorhanden sein dürfen. Wenn das Erstellen neuer Logfiles zu viele Dateien erzeugt, wird die älteste Datei gelöscht. Eine positive ganze Zahl.
-
--restart Die Richtlinie für das Neustarten des Containers bei Beendigung.
-
--name Einen Namen für den Container zuweisen.
Der absolute Pfad vor dem Doppelpunkt bezieht sich auf den Pfad auf dem Host und kann je nach System variieren. Der absolute Pfad nach dem Doppelpunkt bezieht sich auf den Pfad im Container und darf nicht geändert werden. Indem Sie die .env-Datei als Mount-Parameter übergeben, können Sie die Konfigurationswerte später ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
- Docker-Container übertragen
Um den Container auf einen anderen Computer zu übertragen:
- Image in eine Tar-Datei exportieren
docker save --output myems-normalization.tar myems/myems-normalization
- Die Tar-Datei auf einen anderen Computer kopieren und dann das Image aus der Tar-Datei 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 .
Um Images für mehrere Plattformen zu erstellen und nicht nur für die Architektur und das Betriebssystem, auf dem der Build-Befehl 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-aggregation .
- Einen Docker-Container ausführen (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
-
-d Container im Hintergrund ausführen und die Container-ID ausgeben
-
-v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch. Dieser wird immer als Verzeichnis angelegt. Die Option ro sorgt dafür, dass der gemountete Speicherbereich im Container schreibgeschützt eingehängt wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
-
--log-opt max-size=2m Die maximale Größe des Logs, bevor ein neues Logfile erstellt wird. Eine positive ganze Zahl zusammen mit einem Einheitenkennzeichen (k, m oder g).
-
--log-opt max-file=2 Die maximale Anzahl an Logfiles, die vorhanden sein dürfen. Wenn das Erstellen neuer Logfiles zu viele Dateien erzeugt, wird die älteste Datei gelöscht. Eine positive ganze Zahl.
-
--restart Die Richtlinie für das Neustarten des Containers bei Beendigung.
-
--name Einen Namen für den Container zuweisen.
Der absolute Pfad vor dem Doppelpunkt bezieht sich auf den Pfad auf dem Host und kann je nach System variieren. Der absolute Pfad nach dem Doppelpunkt bezieht sich auf den Pfad im Container und darf nicht geändert werden. Indem Sie die .env-Datei als Mount-Parameter übergeben, können Sie die Konfigurationswerte später ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
-
Docker-Container übertragen
-
Image in eine Tar-Datei exportieren
docker save --output myems-aggregation.tar myems/myems-aggregation
- Die Tar-Datei auf einen anderen Computer kopieren und dann das Image aus der Tar-Datei laden
docker load --input .\myems-aggregation.tar
Schritt 8 myems-web
In diesem Abschnitt installieren Sie myems-web mit Docker.
- Die config.js-Datei bearbeiten:
Holen Sie sich einen mapboxToken unter https://mapbox.com und setzen Sie dann showOnlineMap auf true. Wenn Sie die Funktion der Online-Karte deaktivieren möchten, setzen Sie showOnlineMap auf false.
cd myems/myems-web
nano src/config.js
- Die nginx.conf-Datei bearbeiten:
Ersetzen Sie 127.0.0.1:8000 in der 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
Sie können den Befehl 'npm run build' in diesem Abschnitt bedenkenlos ignorieren, da er bereits in der Dockerfile integriert ist.
- Image aus dem Quellcode erstellen
docker build -t myems/myems-web .
docker image prune -f
Um Images für mehrere Plattformen zu erstellen und nicht nur für die Architektur und das Betriebssystem, auf dem der Build-Befehl 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-web .
docker image prune -f
- Einen Docker-Container ausführen
Auf dem Host die nginx.conf mounten:
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
-
-d Container im Hintergrund ausführen und die Container-ID ausgeben
-
-p Einen oder mehrere Ports des Containers an den Host weiterleiten. Die Angabe 80:80 (Host:Container) bindet Port 80 (rechts) des Containers an TCP-Port 80 (links) des Host-Systems.
-
-v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Docker-Host existiert, erstellt -v den Endpunkt automatisch. Dieser wird immer als Verzeichnis angelegt. Die Option ro sorgt dafür, dass der gemountete Speicherbereich im Container schreibgeschützt eingehängt wird. Für Versionen ≤ 4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
-
--log-opt max-size=2m Die maximale Größe des Logs, bevor ein neues Logfile erstellt wird. Eine positive ganze Zahl zusammen mit einem Einheitenkennzeichen (k, m oder g).
-
--log-opt max-file=2 Die maximale Anzahl an Logfiles, die vorhanden sein dürfen. Wenn das Erstellen neuer Logfiles zu viele Dateien erzeugt, wird die älteste Datei gelöscht. Eine positive ganze Zahl.
-
--restart Die Richtlinie für das Neustarten des Containers bei Beendigung.
-
--name Einen Namen für den Container zuweisen.
Wenn Sie das Image auf einen anderen Computer übertragen möchten:
- Image in eine Tar-Datei exportieren
docker save --output myems-web.tar myems/myems-web
- Die Tar-Datei auf einen anderen Computer kopieren und dann das Image aus der Tar-Datei 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
Unter der Annahme, dass die Serveradresse 192.168.1.8 lautet (ersetzen Sie dies durch die tatsächliche Serveradresse) Greifen Sie auf die MyEMS Web UI unter http://192.168.1.8 zu (der Port 80 kann weggelassen werden) Greifen Sie auf die MyEMS Admin UI unter http://192.168.1.8:8001 zu
Standardpasswörter
MyEMS Admin UI
Benutzername:
administrator
Passwort:
!MyEMS1
MyEMS Web UI
Benutzername:
administrator@myems.io
Passwort:
!MyEMS1
Fehlerbehebung
Aufgrund von Netzwerkproblemen bei Ihrem Internetanbieter kann das Herunterladen von Images sehr langsam sein. Sie können dabei auf Drittanbieter-Beschleunigungsdienste zurückgreifen.