Vai al contenuto principale

podman-linux


Podman su Linux

In questa guida, imparerai a distribuire MyEMS con Podman su Linux.

Prerequisiti

  • Podman e npm installati sull'host.
  • Server MySQL installato.
  • Il database MySQL deve essere accessibile dall'host su cui è in esecuzione Podman Engine.
Attenzione
  • Si consiglia di eseguire i comandi podman con privilegi root.

  • Dopo l'installazione di podman, utilizza il comando systemctl status podman-restart.service per verificare se i container sono configurati per l'avvio automatico e la relativa politica. Se viene visualizzato Unit not found, significa che il container non può avviarsi automaticamente.

Passaggio 1 Database

Vedi Database

Passaggio 2 myems-api

In questa sezione, installerai myems-api su Podman.

  • Copia il codice sorgente nella directory root
cp -r myems/myems-api /
cd /myems-api
  • Crea il file .env basato sul file example.env
Attenzione

Sostituisci manualmente 127.0.0.1 con il vero indirizzo IP dell'HOST.

cp example.env .env
  • Costruisci l'immagine dal codice sorgente
podman build -t myems/myems-api .

Per costruire per più piattaforme e non solo per l'architettura e il sistema operativo su cui viene eseguita la build da parte dell'utente, puoi utilizzare buildx e impostare il flag --platform per specificare la piattaforma target per l'output della build (ad esempio, linux/amd64, linux/arm64 o darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-api .
  • Esegui un container Podman

Sull'host, crea una cartella condivisa per i file di upload:

mkdir /myems-upload

Crea un container, monta in bind la cartella condivisa nel container e monta anche il file .env nel container:

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 Esegue il container in background e stampa l'ID del container

  • -p Pubblica la/le porta/e del container sull'host, 8000:8000 (Host:Container) associa la porta 8000 (destra) del container alla porta TCP 8000 (sinistra) della macchina host.

  • -v Se utilizzi -v o --volume per montare in bind un file o una directory che non esiste ancora sull'host Podman, -v crea l'endpoint per te. Viene sempre creato come directory. L'opzione ro, se presente, fa sì che il mount in bind venga montato nel container come sola lettura. Per le versioni v4.7.0 o precedenti, utilizza '/code/.env' invece di '/app/.env'.

  • --log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un numero intero positivo più un modificatore che rappresenta l'unità di misura (k, m o g).

  • --log-opt max-file=2 Il numero massimo di file di log che possono essere presenti. Se la rotazione dei log crea file in eccesso, il file più vecchio viene rimosso. Un numero intero positivo.

  • --restart Politica di riavvio da applicare quando un container termina

  • --name Assegna un nome al container

Il percorso assoluto prima dei due punti si riferisce al percorso sull'host e può variare nel tuo sistema. Il percorso assoluto dopo i due punti si riferisce al percorso nel container e NON può essere modificato. Trasmettendo .env come parametro di mount in bind, puoi modificare successivamente i valori di configurazione. Se modifichi il file .env, riavvia il container per rendere effettiva la modifica.

Se vuoi migrare l'immagine su un altro computer:

  • Esporta l'immagine in un file tarball
podman save --output myems-api.tar myems/myems-api
  • Copia il file tarball su un altro computer, quindi carica l'immagine dal file tarball
podman load --input .\myems-api.tar

Passaggio 3 myems-admin

In questa sezione, installerai myems-admin su Podman.

  • Copia il codice sorgente nella directory root
cp -r myems/myems-admin /
cd /myems-admin
Attenzione

Sostituisci manualmente 127.0.0.1:8000 in nginx.conf con il vero indirizzo IP dell'HOST e la porta di myems-api

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Costruisci l'immagine dal codice sorgente
podman build -t myems/myems-admin .

Per costruire per più piattaforme e non solo per l'architettura e il sistema operativo su cui viene eseguita la build da parte dell'utente, puoi utilizzare buildx e impostare il flag --platform per specificare la piattaforma target per l'output della build (ad esempio, linux/amd64, linux/arm64 o darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Esegui un container Podman

Sull'host, crea una cartella condivisa per i file di upload:

mkdir /myems-upload

Crea un container, monta in bind la cartella condivisa per i file di upload nel container e monta anche nginx.conf in bind:

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 Esegue il container in background e stampa l'ID del container

  • -p Pubblica la/le porta/e del container sull'host, 8001:8001 (Host:Container) associa la porta 8001 (destra) del container alla porta TCP 8001 (sinistra) della macchina host.

  • -v Se utilizzi -v o --volume per montare in bind un file o una directory che non esiste ancora sull'host Podman, -v crea l'endpoint per te. Viene sempre creato come directory. L'opzione ro, se presente, fa sì che il mount in bind venga montato nel container come sola lettura. Per le versioni v4.7.0 o precedenti, utilizza '/code/.env' invece di '/app/.env'.

  • --log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un numero intero positivo più un modificatore che rappresenta l'unità di misura (k, m o g).

  • --log-opt max-file=2 Il numero massimo di file di log che possono essere presenti. Se la rotazione dei log crea file in eccesso, il file più vecchio viene rimosso. Un numero intero positivo.

  • --restart Politica di riavvio da applicare quando un container termina

  • --name Assegna un nome al container

Se vuoi migrare l'immagine su un altro computer:

  • Esporta l'immagine in un file tarball
podman save --output myems-admin.tar myems/myems-admin
  • Copia il file tarball su un altro computer, quindi carica l'immagine dal file tarball
podman load --input .\myems-admin.tar

Passaggio 4 myems-modbus-tcp

In questa sezione, installerai myems-modbus-tcp su Podman.

  • Copia il codice sorgente nella directory root
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • Crea il file .env basato sul file example.env
Attenzione

Sostituisci manualmente 127.0.0.1 con il vero indirizzo IP dell'HOST.

cp example.env .env
  • Costruisci l'immagine dal codice sorgente
podman build -t myems/myems-modbus-tcp .

Per costruire per più piattaforme e non solo per l'architettura e il sistema operativo su cui viene eseguita la build da parte dell'utente, puoi utilizzare buildx e impostare il flag --platform per specificare la piattaforma target per l'output della build (ad esempio, linux/amd64, linux/arm64 o darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Esegui un container Podman (esegui come superutente)
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 Esegue il container in background e stampa l'ID del container

  • -v Se utilizzi -v o --volume per montare in bind un file o una directory che non esiste ancora sull'host Podman, -v crea l'endpoint per te. Viene sempre creato come directory. L'opzione ro, se presente, fa sì che il mount in bind venga montato nel container come sola lettura. Per le versioni v4.7.0 o precedenti, utilizza '/code/.env' invece di '/app/.env'.

  • --log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un numero intero positivo più un modificatore che rappresenta l'unità di misura (k, m o g).

  • --log-opt max-file=2 Il numero massimo di file di log che possono essere presenti. Se la rotazione dei log crea file in eccesso, il file più vecchio viene rimosso. Un numero intero positivo.

  • --restart Politica di riavvio da applicare quando un container termina

  • --name Assegna un nome al container

Il percorso assoluto prima dei due punti si riferisce al percorso sull'host e può variare nel tuo sistema. Il percorso assoluto dopo i due punti si riferisce al percorso nel container e NON può essere modificato. Trasmettendo .env come parametro di mount in bind, puoi modificare successivamente i valori di configurazione. Se modifichi il file .env, riavvia il container per rendere effettiva la modifica.

  • Migra il container Podman

Per migrare il container su un altro computer:

  • Esporta l'immagine in un file tarball
podman save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Copia il file tarball su un altro computer, quindi carica l'immagine dal file tarball
podman load --input .\myems-modbus-tcp.tar

Passaggio 5 myems-cleaning

In questa sezione, installerai myems-cleaning su Podman.

  • Copia il codice sorgente nella directory root
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • Crea il file .env basato sul file example.env
Attenzione

Sostituisci manualmente 127.0.0.1 con il vero indirizzo IP dell'HOST.

cp example.env .env
  • Costruisci l'immagine dal codice sorgente
podman build -t myems/myems-cleaning .

Per costruire per più piattaforme e non solo per l'architettura e il sistema operativo su cui viene eseguita la build da parte dell'utente, puoi utilizzare buildx e impostare il flag --platform per specificare la piattaforma target per l'output della build (ad esempio, linux/amd64, linux/arm64 o darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Esegui un container Podman (esegui come superutente)
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 Esegue il container in background e stampa l'ID del container

  • -v Se utilizzi -v o --volume per montare in bind un file o una directory che non esiste ancora sull'host Podman, -v crea l'endpoint per te. Viene sempre creato come directory. L'opzione ro, se presente, fa sì che il mount in bind venga montato nel container come sola lettura. Per le versioni v4.7.0 o precedenti, utilizza '/code/.env' invece di '/app/.env'.

  • --log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un numero intero positivo più un modificatore che rappresenta l'unità di misura (k, m o g).

  • --log-opt max-file=2 Il numero massimo di file di log che possono essere presenti. Se la rotazione dei log crea file in eccesso, il file più vecchio viene rimosso. Un numero intero positivo.

  • --restart Politica di riavvio da applicare quando un container termina

  • --name Assegna un nome al container

Il percorso assoluto prima dei due punti si riferisce al percorso sull'host e può variare nel tuo sistema. Il percorso assoluto dopo i due punti si riferisce al percorso nel container e NON può essere modificato. Trasmettendo .env come parametro di mount in bind, puoi modificare successivamente i valori di configurazione. Se modifichi il file .env, riavvia il container per rendere effettiva la modifica.

  • Migra il container Podman

Per migrare il container su un altro computer:

  • Esporta l'immagine in un file tarball
podman save --output myems-cleaning.tar myems/myems-cleaning
  • Copia il file tarball su un altro computer, quindi carica l'immagine dal file tarball
podman load --input .\myems-cleaning.tar

Passaggio 6 myems-normalization

In questa sezione, installerai myems-normalization su Podman.

  • Copia il codice sorgente nella directory root
cp -r myems/myems-normalization /
cd /myems-normalization
  • Crea il file .env basato sul file example.env
Attenzione

Sostituisci manualmente 127.0.0.1 con il vero indirizzo IP dell'HOST.

cp example.env .env
  • Costruisci l'immagine dal codice sorgente
podman build -t myems/myems-normalization .

Per costruire per più piattaforme e non solo per l'architettura e il sistema operativo su cui viene eseguita la build da parte dell'utente, puoi utilizzare buildx e impostare il flag --platform per specificare la piattaforma target per l'output della build (ad esempio, linux/amd64, linux/arm64 o darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Esegui un container Podman (esegui come superutente)
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 Esegue il container in background e stampa l'ID del container

  • -v Se utilizzi -v o --volume per montare in bind un file o una directory che non esiste ancora sull'host Podman, -v crea l'endpoint per te. Viene sempre creato come directory. L'opzione ro, se presente, fa sì che il mount in bind venga montato nel container come sola lettura. Per le versioni v4.7.0 o precedenti, utilizza '/code/.env' invece di '/app/.env'.

  • --log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un numero intero positivo più un modificatore che rappresenta l'unità di misura (k, m o g).

  • --log-opt max-file=2 Il numero massimo di file di log che possono essere presenti. Se la rotazione dei log crea file in eccesso, il file più vecchio viene rimosso. Un numero intero positivo.

  • --restart Politica di riavvio da applicare quando un container termina

  • --name Assegna un nome al container

Il percorso assoluto prima dei due punti si riferisce al percorso sull'host e può variare nel tuo sistema. Il percorso assoluto dopo i due punti si riferisce al percorso nel container e NON può essere modificato. Trasmettendo .env come parametro di mount in bind, puoi modificare successivamente i valori di configurazione. Se modifichi il file .env, riavvia il container per rendere effettiva la modifica.

  • Migra il container Podman

Per migrare il container su un altro computer:

  • Esporta l'immagine in un file tarball
podman save --output myems-normalization.tar myems/myems-normalization
  • Copia il file tarball su un altro computer, quindi carica l'immagine dal file tarball
podman load --input .\myems-normalization.tar

Passaggio 7 myems-aggregation

In questa sezione, installerai myems-aggregation su Podman.

  • Copia il codice sorgente nella directory root
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • Crea il file .env basato sul file example.env
cp example.env .env
Attenzione

Sostituisci manualmente 127.0.0.1 con il vero indirizzo IP dell'HOST.

  • Costruisci l'immagine dal codice sorgente
podman build -t myems/myems-aggregation .

Per costruire per più piattaforme e non solo per l'architettura e il sistema operativo su cui viene eseguita la build da parte dell'utente, puoi utilizzare buildx e impostare il flag --platform per specificare la piattaforma target per l'output della build (ad esempio, linux/amd64, linux/arm64 o darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Esegui un container Podman (esegui come superutente)
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 Esegue il container in background e stampa l'ID del container

  • -v Se utilizzi -v o --volume per montare in bind un file o una directory che non esiste ancora sull'host Podman, -v crea l'endpoint per te. Viene sempre creato come directory. L'opzione ro, se presente, fa sì che il mount in bind venga montato nel container come sola lettura. Per le versioni v4.7.0 o precedenti, utilizza '/code/.env' invece di '/app/.env'.

  • --log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un numero intero positivo più un modificatore che rappresenta l'unità di misura (k, m o g).

  • --log-opt max-file=2 Il numero massimo di file di log che possono essere presenti. Se la rotazione dei log crea file in eccesso, il file più vecchio viene rimosso. Un numero intero positivo.

  • --restart Politica di riavvio da applicare quando un container termina

  • --name Assegna un nome al container

Il percorso assoluto prima dei due punti si riferisce al percorso sull'host e può variare nel tuo sistema. Il percorso assoluto dopo i due punti si riferisce al percorso nel container e NON può essere modificato. Trasmettendo .env come parametro di mount in bind, puoi modificare successivamente i valori di configurazione. Se modifichi il file .env, riavvia il container per rendere effettiva la modifica.

  • Migra il container Podman

  • Esporta l'immagine in un file tarball

podman save --output myems-aggregation.tar myems/myems-aggregation
  • Copia il file tarball su un altro computer, quindi carica l'immagine dal file tarball
podman load --input .\myems-aggregation.tar

Passaggio 8 myems-web

In questa sezione, installerai myems-web su Podman.

  • Modifica il file config.js:
Nota

Ottieni il mapboxToken su https://mapbox.com e imposta showOnlineMap su true. Se vuoi disabilitare la funzione di mappa online, imposta showOnlineMap su false

cd myems/myems-web
nano src/config.js
Attenzione

Sostituisci 127.0.0.1:8000 in nginx.conf con il vero IP dell'HOST e la porta di myems-api

cd myems/myems-web
nano nginx.conf
  • Copia il codice sorgente nella directory root
cp -r myems/myems-web /
cd /myems-web
Informazioni

Puoi ignorare tranquillamente il comando 'npm run build' in questa sezione, perché è incluso nella Podmanfile

  • Costruisci l'immagine dal codice sorgente
podman build -t myems/myems-web .

Per costruire per più piattaforme e non solo per l'architettura e il sistema operativo su cui viene eseguita la build da parte dell'utente, puoi utilizzare buildx e impostare il flag --platform per specificare la piattaforma target per l'output della build (ad esempio, linux/amd64, linux/arm64 o darwin/amd64).

podman buildx build --platform=linux/amd64 -t myems/myems-web .
  • Esegui un container Podman

Sull'host, monta nginx.conf in bind:

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 Esegue il container in background e stampa l'ID del container

  • -p Pubblica la/le porta/e del container sull'host, 80:80 (Host:Container) associa la porta 80 (destra) del container alla porta TCP 80 (sinistra) della macchina host.

  • -v Se utilizzi -v o --volume per montare in bind un file o una directory che non esiste ancora sull'host Podman, -v crea l'endpoint per te. Viene sempre creato come directory. L'opzione ro, se presente, fa sì che il mount in bind venga montato nel container come sola lettura. Per le versioni v4.7.0 o precedenti, utilizza '/code/.env' invece di '/app/.env'.

  • --log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un numero intero positivo più un modificatore che rappresenta l'unità di misura (k, m o g).

  • --log-opt max-file=2 Il numero massimo di file di log che possono essere presenti. Se la rotazione dei log crea file in eccesso, il file più vecchio viene rimosso. Un numero intero positivo.

  • --restart Politica di riavvio da applicare quando un container termina

  • --name Assegna un nome al container

Se vuoi migrare l'immagine su un altro computer:

  • Esporta l'immagine in un file tarball
podman save --output myems-web.tar myems/myems-web
  • Copia il file tarball su un altro computer, quindi carica l'immagine dal file tarball
podman load --input .\myems-web.tar

Dopo l'installazione

Complimenti! Ora puoi accedere all'UI Amministrativa e all'UI Web di MyEMS.

Porte predefinite

UI Web di MyEMS: 80

API di MyEMS: 8000

UI Amministrativa di MyEMS: 8001

Assumendo che l'indirizzo del server sia 192.168.1.8 (sostituisci con l'indirizzo effettivo del server) Accedi all'UI Web di MyEMS all'indirizzo http://192.168.1.8 (la porta 80 può essere omessa) Accedi all'UI Amministrativa di MyEMS all'indirizzo http://192.168.1.8:8001

Password predefinite

UI Amministrativa di MyEMS

Nome utente:

administrator

Password:

!MyEMS1

UI Web di MyEMS

Nome utente:

administrator@myems.io

Password:

!MyEMS1

Risoluzione dei problemi