docker-linux
sidebar_position: 4
Docker su Linux/macOS
In questa guida, imparerai a distribuire MyEMS con Docker su Linux (o macOS).
Prerequisiti
- Docker e npm installati sul host.
- Server MySQL installato.
- Il database MySQL deve essere accessibile dall'host su cui è in esecuzione Docker Engine.
- Requisiti hardware: almeno 4GB di RAM, 20GB di spazio di archiviazione (database e container Docker).
Clona il codice sorgente:
cd ~
git clone https://github.com/myems/myems
Passaggio 1 Database
Vedi Database
Passaggio 2 myems-api
In questa sezione, installerai myems-api su Docker.
- 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
docker 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).
docker buildx build --platform=linux/amd64 -t myems/myems-api .
- Esegui un container Docker
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:
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 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 Docker, -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 tar
docker save --output myems-api.tar myems/myems-api
- Copia il file tar su un altro computer, quindi carica l'immagine dal file tar
docker load --input .\myems-api.tar
Passaggio 3 myems-admin
In questa sezione, installerai myems-admin su Docker.
- 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
docker 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).
docker buildx build --platform=linux/amd64 -t myems/myems-admin .
- Esegui un container Docker
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:
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 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 Docker, -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 tar
docker save --output myems-admin.tar myems/myems-admin
- Copia il file tar su un altro computer, quindi carica l'immagine dal file tar
docker load --input .\myems-admin.tar
Passaggio 4 myems-modbus-tcp
In questa sezione, installerai myems-modbus-tcp su Docker.
- 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
docker 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).
docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- Esegui un container Docker (esegui come superutente)
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 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 Docker, -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 Docker
Per migrare il container su un altro computer:
- Esporta l'immagine in un file tar
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Copia il file tar su un altro computer, quindi carica l'immagine dal file tar
docker load --input .\myems-modbus-tcp.tar
Passaggio 5 myems-cleaning
In questa sezione, installerai myems-cleaning su Docker.
- 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
docker 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).
docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- Esegui un container Docker (esegui come superutente)
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 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 Docker, -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 Docker
Per migrare il container su un altro computer:
- Esporta l'immagine in un file tar
docker save --output myems-cleaning.tar myems/myems-cleaning
- Copia il file tar su un altro computer, quindi carica l'immagine dal file tar
docker load --input .\myems-cleaning.tar
Passaggio 6 myems-normalization
In questa sezione, installerai myems-normalization su Docker.
- 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
docker 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).
docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
- Esegui un container Docker (esegui come superutente)
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 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 Docker, -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 Docker
Per migrare il container su un altro computer:
- Esporta l'immagine in un file tar
docker save --output myems-normalization.tar myems/myems-normalization
- Copia il file tar su un altro computer, quindi carica l'immagine dal file tar
docker load --input .\myems-normalization.tar
Passaggio 7 myems-aggregation
In questa sezione, installerai myems-aggregation su Docker.
- 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
docker 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).
docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
- Esegui un container Docker (esegui come superutente)
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 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 Docker, -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 Docker
-
Esporta l'immagine in un file tar
docker save --output myems-aggregation.tar myems/myems-aggregation
- Copia il file tar su un altro computer, quindi carica l'immagine dal file tar
docker load --input .\myems-aggregation.tar
Passaggio 8 myems-web
In questa sezione, installerai myems-web su Docker.
- 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
- Modifica il file nginx.conf:
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 Dockerfile
- Costruisci l'immagine dal codice sorgente
docker build -t myems/myems-web .
docker image prune -f
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).
docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
- Esegui un container Docker
Sull'host, monta nginx.conf in bind:
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 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 Docker, -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 tar
docker save --output myems-web.tar myems/myems-web
- Copia il file tar su un altro computer, quindi carica l'immagine dal file tar
docker 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
A causa di problemi di rete dell'ISP, potresti riscontrare lento download delle immagini. Puoi utilizzare servizi di accelerazione di terze parti.