Podman unter Linux
In diesem Handbuch stellen Sie MyEMS mit Podman unter Linux bereit.
Voraussetzungen
- Podman und npm sind auf dem Host installiert.
- MySQL-Server ist installiert.
- Auf dem MySQL-Datenbank kann von dem Host, auf dem die Podman-Engine läuft, zugegriffen werden.
- Es wird empfohlen, Podman-Befehle mit Root-Rechten auszuführen.
- Nach der Installation von Podman überprüfen Sie mit dem Befehl
systemctl status podman-restart.service, ob die Container für den automatischen Start und die entsprechende Richtlinie konfiguriert sind. Wird „Unit not found“ angezeigt, bedeutet dies, dass der Container nicht automatisch startet.
Schritt 1 Datenbank
Siehe Datenbank
Schritt 2 myems-api
In diesem Abschnitt installieren Sie myems-api auf Podman.
- 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
podman build -t myems/myems-api .
Um für mehrere Plattformen zu bauen und nicht nur für die Architektur und das Betriebssystem, auf dem der Benutzer den Build ausführt, 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).
podman buildx build --platform=linux/amd64 -t myems/myems-api .
- Podman-Container starten Auf dem Host einen gemeinsamen Upload-Ordner erstellen:
mkdir /myems-upload
Container erstellen, den gemeinsamen Ordner an den Container mounten und zusätzlich die .env-Datei an den Container mounten:
podman 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) eines Containers auf den Host veröffentlichen; 8000:8000 (Host:Container) bindet Port 8000 (rechts) des Containers an TCP-Port 8000 (links) des Hosts.
- -v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Podman-Host existiert, erstellt -v den Endpunkt automatisch. Er wird immer als Verzeichnis erstellt. Die Option ro bewirkt, dass das Bind-Mount als schreibgeschützt in den Container gemountet wird. Für Versionen ≤ v4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
- --log-opt max-size=1m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus ein Modifikator für die Einheit (k, m oder g).
- --log-opt max-file=2 Maximale Anzahl an vorhandenen Log-Dateien. Beim Rollover überschüssiger Dateien wird die älteste Datei gelöscht. Eine positive ganze Zahl.
- --restart Richtlinie für Neustart, wenn ein Container beendet wird
- --name Einen Namen dem Container zuweisen
Der absolute Pfad vor dem Doppelpunkt gilt für den Pfad auf dem Host und kann bei Ihrem System variieren. Der absolute Pfad nach dem Doppelpunkt gilt für den Pfad im Container und darf nicht geändert werden. Durch Übergabe von .env als Bind-Mount-Parameter können Sie später die Konfigurationswerte ä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 migrieren möchten:
- Image als Tarball-Datei exportieren
podman save --output myems-api.tar myems/myems-api
- Tarball-Datei auf einen anderen Computer kopieren und dann Image aus der Tarball-Datei laden
podman load --input ./myems-api.tar
Schritt 3 myems-admin
In diesem Abschnitt installieren Sie myems-admin auf Podman.
- 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 und den Port von myems-api.
nano nginx.conf
proxy_pass http://127.0.0.1:8000/;
- Image aus dem Quellcode erstellen
podman build -t myems/myems-admin .
Um für mehrere Plattformen zu bauen und nicht nur für die Architektur und das Betriebssystem, auf dem der Benutzer den Build ausführt, 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).
podman buildx build --platform=linux/amd64 -t myems/myems-admin .
- Podman-Container starten Auf dem Host einen gemeinsamen Upload-Ordner erstellen:
mkdir /myems-upload
Container erstellen, den gemeinsamen Upload-Ordner an den Container mounten und zusätzlich die nginx.conf mounten:
podman 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(s) eines Containers auf den Host veröffentlichen; 8001:8001 (Host:Container) bindet Port 8001 (rechts) des Containers an TCP-Port 8001 (links) des Hosts.
- -v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Podman-Host existiert, erstellt -v den Endpunkt automatisch. Er wird immer als Verzeichnis erstellt. Die Option ro bewirkt, dass das Bind-Mount als schreibgeschützt in den Container gemountet wird. Für Versionen ≤ v4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
- --log-opt max-size=1m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus ein Modifikator für die Einheit (k, m oder g).
- --log-opt max-file=2 Maximale Anzahl an vorhandenen Log-Dateien. Beim Rollover überschüssiger Dateien wird die älteste Datei gelöscht. Eine positive ganze Zahl.
- --restart Richtlinie für Neustart, wenn ein Container beendet wird
- --name Einen Namen dem Container zuweisen
Wenn Sie das Image auf einen anderen Computer migrieren möchten:
- Image als Tarball-Datei exportieren
podman save --output myems-admin.tar myems/myems-admin
- Tarball-Datei auf einen anderen Computer kopieren und dann Image aus der Tarball-Datei laden
podman load --input ./myems-admin.tar
Schritt 4 myems-modbus-tcp
In diesem Abschnitt installieren Sie myems-modbus-tcp auf Podman.
- 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
podman build -t myems/myems-modbus-tcp .
Um für mehrere Plattformen zu bauen und nicht nur für die Architektur und das Betriebssystem, auf dem der Benutzer den Build ausführt, 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).
podman buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- Podman-Container starten (als Superuser ausführen)
podman 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 Container-ID ausgeben
- -v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Podman-Host existiert, erstellt -v den Endpunkt automatisch. Er wird immer als Verzeichnis erstellt. Die Option ro bewirkt, dass das Bind-Mount als schreibgeschützt in den Container gemountet wird. Für Versionen ≤ v4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
- --log-opt max-size=1m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus ein Modifikator für die Einheit (k, m oder g).
- --log-opt max-file=2 Maximale Anzahl an vorhandenen Log-Dateien. Beim Rollover überschüssiger Dateien wird die älteste Datei gelöscht. Eine positive ganze Zahl.
- --restart Richtlinie für Neustart, wenn ein Container beendet wird
- --name Einen Namen dem Container zuweisen
Der absolute Pfad vor dem Doppelpunkt gilt für den Pfad auf dem Host und kann bei Ihrem System variieren. Der absolute Pfad nach dem Doppelpunkt gilt für den Pfad im Container und darf nicht geändert werden. Durch Übergabe von .env als Bind-Mount-Parameter können Sie später die Konfigurationswerte ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
- Podman-Container migrieren Um den Container auf einen anderen Computer zu migrieren:
- Image als Tarball-Datei exportieren
podman save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Tarball-Datei auf einen anderen Computer kopieren und dann Image aus der Tarball-Datei laden
podman load --input ./myems-modbus-tcp.tar
Schritt 5 myems-cleaning
In diesem Abschnitt installieren Sie myems-cleaning auf Podman.
- 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
podman build -t myems/myems-cleaning .
Um für mehrere Plattformen zu bauen und nicht nur für die Architektur und das Betriebssystem, auf dem der Benutzer den Build ausführt, 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).
podman buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- Podman-Container starten (als Superuser ausführen)
podman 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 Container-ID ausgeben
- -v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Podman-Host existiert, erstellt -v den Endpunkt automatisch. Er wird immer als Verzeichnis erstellt. Die Option ro bewirkt, dass das Bind-Mount als schreibgeschützt in den Container gemountet wird. Für Versionen ≤ v4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
- --log-opt max-size=1m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus ein Modifikator für die Einheit (k, m oder g).
- --log-opt max-file=2 Maximale Anzahl an vorhandenen Log-Dateien. Beim Rollover überschüssiger Dateien wird die älteste Datei gelöscht. Eine positive ganze Zahl.
- --restart Richtlinie für Neustart, wenn ein Container beendet wird
- --name Einen Namen dem Container zuweisen
Der absolute Pfad vor dem Doppelpunkt gilt für den Pfad auf dem Host und kann bei Ihrem System variieren. Der absolute Pfad nach dem Doppelpunkt gilt für den Pfad im Container und darf nicht geändert werden. Durch Übergabe von .env als Bind-Mount-Parameter können Sie später die Konfigurationswerte ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
- Podman-Container migrieren Um den Container auf einen anderen Computer zu migrieren:
- Image als Tarball-Datei exportieren
podman save --output myems-cleaning.tar myems/myems-cleaning
- Tarball-Datei auf einen anderen Computer kopieren und dann Image aus der Tarball-Datei laden
podman load --input ./myems-cleaning.tar
Schritt 6 myems-normalization
In diesem Abschnitt installieren Sie myems-normalization auf Podman.
- 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
podman build -t myems/myems-normalization .
Um für mehrere Plattformen zu bauen und nicht nur für die Architektur und das Betriebssystem, auf dem der Benutzer den Build ausführt, 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).
podman buildx build --platform=linux/amd64 -t myems/myems-normalization .
- Podman-Container starten (als Superuser ausführen)
podman 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 Container-ID ausgeben
- -v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Podman-Host existiert, erstellt -v den Endpunkt automatisch. Er wird immer als Verzeichnis erstellt. Die Option ro bewirkt, dass das Bind-Mount als schreibgeschützt in den Container gemountet wird. Für Versionen ≤ v4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
- --log-opt max-size=1m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus ein Modifikator für die Einheit (k, m oder g).
- --log-opt max-file=2 Maximale Anzahl an vorhandenen Log-Dateien. Beim Rollover überschüssiger Dateien wird die älteste Datei gelöscht. Eine positive ganze Zahl.
- --restart Richtlinie für Neustart, wenn ein Container beendet wird
- --name Einen Namen dem Container zuweisen
Der absolute Pfad vor dem Doppelpunkt gilt für den Pfad auf dem Host und kann bei Ihrem System variieren. Der absolute Pfad nach dem Doppelpunkt gilt für den Pfad im Container und darf nicht geändert werden. Durch Übergabe von .env als Bind-Mount-Parameter können Sie später die Konfigurationswerte ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
- Podman-Container migrieren Um den Container auf einen anderen Computer zu migrieren:
- Image als Tarball-Datei exportieren
podman save --output myems-normalization.tar myems/myems-normalization
- Tarball-Datei auf einen anderen Computer kopieren und dann Image aus der Tarball-Datei laden
podman load --input ./myems-normalization.tar
Schritt 7 myems-aggregation
In diesem Abschnitt installieren Sie myems-aggregation auf Podman.
- 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
podman build -t myems/myems-aggregation .
Um für mehrere Plattformen zu bauen und nicht nur für die Architektur und das Betriebssystem, auf dem der Benutzer den Build ausführt, 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).
podman buildx build --platform=linux/amd64 -t myems/myems-aggregation .
- Podman-Container starten (als Superuser ausführen)
podman 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 Container-ID ausgeben
- -v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Podman-Host existiert, erstellt -v den Endpunkt automatisch. Er wird immer als Verzeichnis erstellt. Die Option ro bewirkt, dass das Bind-Mount als schreibgeschützt in den Container gemountet wird. Für Versionen ≤ v4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
- --log-opt max-size=1m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus ein Modifikator für die Einheit (k, m oder g).
- --log-opt max-file=2 Maximale Anzahl an vorhandenen Log-Dateien. Beim Rollover überschüssiger Dateien wird die älteste Datei gelöscht. Eine positive ganze Zahl.
- --restart Richtlinie für Neustart, wenn ein Container beendet wird
- --name Einen Namen dem Container zuweisen
Der absolute Pfad vor dem Doppelpunkt gilt für den Pfad auf dem Host und kann bei Ihrem System variieren. Der absolute Pfad nach dem Doppelpunkt gilt für den Pfad im Container und darf nicht geändert werden. Durch Übergabe von .env als Bind-Mount-Parameter können Sie später die Konfigurationswerte ändern. Wenn Sie die .env-Datei ändern, starten Sie den Container neu, damit die Änderungen wirksam werden.
- Podman-Container migrieren
- Image als Tarball-Datei exportieren
podman save --output myems-aggregation.tar myems/myems-aggregation
- Tarball-Datei auf einen anderen Computer kopieren und dann Image aus der Tarball-Datei laden
podman load --input ./myems-aggregation.tar
Schritt 8 myems-web
In diesem Abschnitt installieren Sie myems-web auf Podman.
- 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
Ersetzen Sie 127.0.0.1:8000 in der nginx.conf durch die tatsächliche HOST-IP 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 sicher ignorieren, da er in der Podmanfile integriert ist.
- Image aus dem Quellcode erstellen
podman build -t myems/myems-web .
Um für mehrere Plattformen zu bauen und nicht nur für die Architektur und das Betriebssystem, auf dem der Benutzer den Build ausführt, 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).
podman buildx build --platform=linux/amd64 -t myems/myems-web .
- Podman-Container starten Auf dem Host die nginx.conf mounten:
podman 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 Container-ID ausgeben
- -p Port(s) eines Containers auf den Host veröffentlichen; 80:80 (Host:Container) bindet Port 80 (rechts) des Containers an TCP-Port 80 (links) des Hosts.
- -v Wenn Sie -v oder --volume verwenden, um eine Datei oder ein Verzeichnis zu mounten, das noch nicht auf dem Podman-Host existiert, erstellt -v den Endpunkt automatisch. Er wird immer als Verzeichnis erstellt. Die Option ro bewirkt, dass das Bind-Mount als schreibgeschützt in den Container gemountet wird. Für Versionen ≤ v4.7.0 verwenden Sie '/code/.env' statt '/app/.env'.
- --log-opt max-size=1m Maximale Größe des Logs vor dem Rollover. Eine positive ganze Zahl plus ein Modifikator für die Einheit (k, m oder g).
- --log-opt max-file=2 Maximale Anzahl an vorhandenen Log-Dateien. Beim Rollover überschüssiger Dateien wird die älteste Datei gelöscht. Eine positive ganze Zahl.
- --restart Richtlinie für Neustart, wenn ein Container beendet wird
- --name Einen Namen dem Container zuweisen
Wenn Sie das Image auf einen anderen Computer migrieren möchten:
- Image als Tarball-Datei exportieren
podman save --output myems-web.tar myems/myems-web
- Tarball-Datei auf einen anderen Computer kopieren und dann Image aus der Tarball-Datei laden
podman 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 die 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