Ir al contenido principal

Docker unter Windows

In dieser Anleitung stellen Sie MyEMS mit Docker unter Windows 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 c:\
cd c:\myems-api
Precaución

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

Erstellen Sie auf dem Host einen Ordner unter c:\myems-upload, mounten Sie ihn an den Container und mounten Sie zusätzlich die .env-Datei an den Container:

docker run -d -p 8000:8000 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\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 c:\
cd c:\myems-admin
Precaución

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.

notepad 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

Erstellen Sie auf dem Host einen Ordner unter c:\myems-upload, mounten Sie ihn an den Container und mounten Sie zusätzlich die nginx.conf an den Container. Der -v-Parameter für den Upload-Ordner muss identisch mit dem in myems-api sein.

docker run -d -p 8001:8001 -v c:\myems-upload:/var/www/myems-admin/upload -v c:\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 c:\
cd c:\myems-modbus-tcp
  • .env-Datei anhand der example.env-Datei erstellen
Precaución

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 Administrator ausführen)
docker run -d -v c:\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 c:\
cd c:\myems-cleaning
  • .env-Datei anhand der example.env-Datei erstellen
Precaución

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 Administrator ausführen)
docker run -d -v c:\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 c:\
cd c:\myems-normalization
  • .env-Datei anhand der example.env-Datei erstellen
Precaución

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 Administrator ausführen)
docker run -d -v c:\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 c:\
cd c:\myems-aggregation
  • .env-Datei anhand der example.env-Datei erstellen
Precaución

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-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 Administrator ausführen)
docker run -d -v c:\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:
Nota

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
notepad src/config.js
Precaución

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
notepad nginx.conf
  • Quellcode in das Stammverzeichnis kopieren
cp -r myems/myems-web c:\
cd c:\myems-web
Información

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

Mounten Sie auf dem Host die nginx.conf an den Container:

docker run -d -p 80:80 -v c:\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

Wie man Timeout-Probleme beim Image-Pulling löst

Aufgrund von Netzwerkproblemen bei Ihrem Internetanbieter kann das Herunterladen von Images sehr langsam sein. Sie können dabei auf Drittanbieter-Beschleunigungsdienste zurückgreifen.