podman-linux
sidebar_position: 14
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.
-
Si consiglia di eseguire i comandi podman con privilegi root.
-
Dopo l'installazione di podman, utilizza il comando
systemctl status podman-restart.serviceper verificare se i container sono configurati per l'avvio automatico e la relativa politica. Se viene visualizzatoUnit 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
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
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
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
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
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
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:
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
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
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