Docker su Windows
In questa guida, distribuirai MyEMS con Docker su Windows.
Prerequisiti
- Docker, npm installati sull'host.
- Server MySQL installato.
- Il database MySQL può essere connesso dall'host su cui viene eseguito il Docker Engine.
- Requisiti hardware: Almeno 4GB RAM, 20GB spazio di archiviazione (database e contenitore Docker).
Clona il codice sorgente:
cd ~
git clone https://github.com/myems/myems
Passo 1 Database
Vedi Database
Passo 2 myems-api
In questa sezione, installerai myems-api su Docker.
- Copia il codice sorgente nella directory root
cp -r myems/myems-api c:\
cd c:\myems-api
- Crea file .env basato su file example.env
Sostituisci manualmente 127.0.0.1 con il reale indirizzo IP HOST.
cp example.env .env
- Costruisci immagine dal codice sorgente
docker build -t myems/myems-api .
Per costruire per più piattaforme e non solo per l'architettura e sistema operativo su cui l'utente che invoca la build è in esecuzione. Puoi usare buildx e impostare il flag --platform per specificare la piattaforma di destinazione 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 contenitore Docker
Sull'host, crea una cartella in c:\myems-upload, e montala come bind nel contenitore, e monta anche .env nel contenitore:
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 Esegui contenitore in background e stampa ID contenitore
-
-p Pubblica porta(e) di un contenitore sull'host, 8000:8000 (Host:Contenitore) lega la porta 8000 (destra) del contenitore alla porta TCP 8000 (sinistra) della macchina host.
-
-v Se usi -v o --volume per montare come bind un file o directory che non esiste ancora sull'host Docker, -v crea l'endpoint per te. Viene sempre creata come directory. L'opzione ro, se presente, causa il montaggio del bind nel contenitore come sola lettura. Per versioni v4.7.0 o precedenti, usa '/code/.env' invece di '/app/.env'.
-
--log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un 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 intero positivo.
-
--restart Politica di riavvio da applicare quando un contenitore esce
-
--name Assegna un nome al contenitore
Il percorso assoluto prima dei due punti è per il percorso sull'host e può variare sul tuo sistema. Il percorso assoluto dopo i due punti è per il percorso sul contenitore e NON PUÒ essere cambiato. Passando .env come parametro bind-mount, puoi cambiare i valori di configurazione successivamente. Se cambi il file .env, riavvia il contenitore per rendere effettiva la modifica.
Se vuoi migrare l'immagine su un altro computer,
- Esporta immagine in file tarball
docker save --output myems-api.tar myems/myems-api
- Copia il file tarball su un altro computer, e poi carica l'immagine dal file tarball
docker load --input .\myems-api.tar
Passo 3 myems-admin
In questa sezione, installerai myems-admin su Docker.
- Copia il codice sorgente nella directory root
cp -r myems/myems-admin c:\
cd c:\myems-admin
Sostituisci manualmente 127.0.0.1:8000 in nginx.conf con il reale indirizzo IP e porta HOST di myems-api
notepad nginx.conf
proxy_pass http://127.0.0.1:8000/;
- Costruisci immagine dal codice sorgente
docker build -t myems/myems-admin .
Per costruire per più piattaforme e non solo per l'architettura e sistema operativo su cui l'utente che invoca la build è in esecuzione. Puoi usare buildx e impostare il flag --platform per specificare la piattaforma di destinazione 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 contenitore Docker
Sull'host, crea una cartella in c:\myems-upload, e montala come bind nel contenitore, e monta anche nginx.conf nel contenitore: Il parametro -v per la cartella upload deve essere lo stesso di quello in myems-api
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 Esegui contenitore in background e stampa ID contenitore
-
-p Pubblica porta(e) di un contenitore sull'host, 8001:8001 (Host:Contenitore) lega la porta 8001 (destra) del contenitore alla porta TCP 8001 (sinistra) della macchina host.
-
-v Se usi -v o --volume per montare come bind un file o directory che non esiste ancora sull'host Docker, -v crea l'endpoint per te. Viene sempre creata come directory. L'opzione ro, se presente, causa il montaggio del bind nel contenitore come sola lettura. Per versioni v4.7.0 o precedenti, usa '/code/.env' invece di '/app/.env'.
-
--log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un 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 intero positivo.
-
--restart Politica di riavvio da applicare quando un contenitore esce
-
--name Assegna un nome al contenitore
Se vuoi migrare l'immagine su un altro computer,
- Esporta immagine in file tarball
docker save --output myems-admin.tar myems/myems-admin
- Copia il file tarball su un altro computer, e poi carica l'immagine dal file tarball
docker load --input .\myems-admin.tar
Passo 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 c:\
cd c:\myems-modbus-tcp
- Crea file .env basato su file example.env
Sostituisci manualmente 127.0.0.1 con il reale indirizzo IP HOST.
cp example.env .env
- Costruisci immagine dal codice sorgente
docker build -t myems/myems-modbus-tcp .
Per costruire per più piattaforme e non solo per l'architettura e sistema operativo su cui l'utente che invoca la build è in esecuzione. Puoi usare buildx e impostare il flag --platform per specificare la piattaforma di destinazione 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 contenitore Docker (Esegui come Amministratore)
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 Esegui contenitore in background e stampa ID contenitore
-
-v Se usi -v o --volume per montare come bind un file o directory che non esiste ancora sull'host Docker, -v crea l'endpoint per te. Viene sempre creata come directory. L'opzione ro, se presente, causa il montaggio del bind nel contenitore come sola lettura. Per versioni v4.7.0 o precedenti, usa '/code/.env' invece di '/app/.env'.
-
--log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un 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 intero positivo.
-
--restart Politica di riavvio da applicare quando un contenitore esce
-
--name Assegna un nome al contenitore
Il percorso assoluto prima dei due punti è per il percorso sull'host e può variare sul tuo sistema. Il percorso assoluto dopo i due punti è per il percorso sul contenitore e NON PUÒ essere cambiato. Passando .env come parametro bind-mount, puoi cambiare i valori di configurazione successivamente. Se cambi il file .env, riavvia il contenitore per rendere effettiva la modifica.
- Migra il contenitore Docker
Per migrare il contenitore su un altro computer,
- Esporta immagine in file tarball
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Copia il file tarball su un altro computer, e poi carica l'immagine dal file tarball
docker load --input .\myems-modbus-tcp.tar
Passo 5 myems-cleaning
In questa sezione, installerai myems-cleaning su Docker.
- Copia il codice sorgente nella directory root
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
- Crea file .env basato su file example.env
Sostituisci manualmente 127.0.0.1 con il reale indirizzo IP HOST.
cp example.env .env
- Costruisci immagine dal codice sorgente
docker build -t myems/myems-cleaning .
Per costruire per più piattaforme e non solo per l'architettura e sistema operativo su cui l'utente che invoca la build è in esecuzione. Puoi usare buildx e impostare il flag --platform per specificare la piattaforma di destinazione 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 contenitore Docker (Esegui come Amministratore)
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 Esegui contenitore in background e stampa ID contenitore
-
-v Se usi -v o --volume per montare come bind un file o directory che non esiste ancora sull'host Docker, -v crea l'endpoint per te. Viene sempre creata come directory. L'opzione ro, se presente, causa il montaggio del bind nel contenitore come sola lettura. Per versioni v4.7.0 o precedenti, usa '/code/.env' invece di '/app/.env'.
-
--log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un 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 intero positivo.
-
--restart Politica di riavvio da applicare quando un contenitore esce
-
--name Assegna un nome al contenitore
Il percorso assoluto prima dei due punti è per il percorso sull'host e può variare sul tuo sistema. Il percorso assoluto dopo i due punti è per il percorso sul contenitore e NON PUÒ essere cambiato. Passando .env come parametro bind-mount, puoi cambiare i valori di configurazione successivamente. Se cambi il file .env, riavvia il contenitore per rendere effettiva la modifica.
- Migra il contenitore Docker
Per migrare il contenitore su un altro computer,
- Esporta immagine in file tarball
docker save --output myems-cleaning.tar myems/myems-cleaning
- Copia il file tarball su un altro computer, e poi carica l'immagine dal file tarball
docker load --input .\myems-cleaning.tar
Passo 6 myems-normalization
In questa sezione, installerai myems-normalization su Docker.
- Copia il codice sorgente nella directory root
cp -r myems/myems-normalization c:\
cd c:\myems-normalization
- Crea file .env basato su file example.env
Sostituisci manualmente 127.0.0.1 con il reale indirizzo IP HOST.
cp example.env .env
- Costruisci immagine dal codice sorgente
docker build -t myems/myems-normalization .
Per costruire per più piattaforme e non solo per l'architettura e sistema operativo su cui l'utente che invoca la build è in esecuzione. Puoi usare buildx e impostare il flag --platform per specificare la piattaforma di destinazione 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 contenitore Docker (Esegui come Amministratore)
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 Esegui contenitore in background e stampa ID contenitore
-
-v Se usi -v o --volume per montare come bind un file o directory che non esiste ancora sull'host Docker, -v crea l'endpoint per te. Viene sempre creata come directory. L'opzione ro, se presente, causa il montaggio del bind nel contenitore come sola lettura. Per versioni v4.7.0 o precedenti, usa '/code/.env' invece di '/app/.env'.
-
--log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un 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 intero positivo.
-
--restart Politica di riavvio da applicare quando un contenitore esce
-
--name Assegna un nome al contenitore
Il percorso assoluto prima dei due punti è per il percorso sull'host e può variare sul tuo sistema. Il percorso assoluto dopo i due punti è per il percorso sul contenitore e NON PUÒ essere cambiato. Passando .env come parametro bind-mount, puoi cambiare i valori di configurazione successivamente. Se cambi il file .env, riavvia il contenitore per rendere effettiva la modifica.
- Migra il contenitore Docker
Per migrare il contenitore su un altro computer,
- Esporta immagine in file tarball
docker save --output myems-normalization.tar myems/myems-normalization
- Copia il file tarball su un altro computer, e poi carica l'immagine dal file tarball
docker load --input .\myems-normalization.tar
Passo 7 myems-aggregation
In questa sezione, installerai myems-aggregation su Docker.
- Copia il codice sorgente nella directory root
cp -r myems/myems-aggregation c:\
cd c:\myems-aggregation
- Crea file .env basato su file example.env
Sostituisci manualmente 127.0.0.1 con il reale indirizzo IP HOST.
cp example.env .env
- Costruisci immagine dal codice sorgente
docker build -t myems/myems-aggregation .
Per costruire per più piattaforme e non solo per l'architettura e sistema operativo su cui l'utente che invoca la build è in esecuzione. Puoi usare buildx e impostare il flag --platform per specificare la piattaforma di destinazione 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 contenitore Docker (esegui come Amministratore)
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 Esegui contenitore in background e stampa ID contenitore
-
-v Se usi -v o --volume per montare come bind un file o directory che non esiste ancora sull'host Docker, -v crea l'endpoint per te. Viene sempre creata come directory. L'opzione ro, se presente, causa il montaggio del bind nel contenitore come sola lettura. Per versioni v4.7.0 o precedenti, usa '/code/.env' invece di '/app/.env'.
-
--log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un 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 intero positivo.
-
--restart Politica di riavvio da applicare quando un contenitore esce
-
--name Assegna un nome al contenitore
Il percorso assoluto prima dei due punti è per il percorso sull'host e può variare sul tuo sistema. Il percorso assoluto dopo i due punti è per il percorso sul contenitore e NON PUÒ essere cambiato. Passando .env come parametro bind-mount, puoi cambiare i valori di configurazione successivamente. Se cambi il file .env, riavvia il contenitore per rendere effettiva la modifica.
-
Migra il contenitore Docker
-
Esporta immagine in file tarball
docker save --output myems-aggregation.tar myems/myems-aggregation
- Copia il file tarball su un altro computer, e poi carica l'immagine dal file tarball
docker load --input .\myems-aggregation.tar
Passo 8 myems-web
In questa sezione, installerai myems-web su Docker.
- Modifica il file config.js:
Ottieni mapboxToken su https://mapbox.com e poi imposta showOnlineMap su true. Se vuoi disattivare la funzionalità mappa online, imposta showOnlineMap su false
cd myems/myems-web
notepad src/config.js
Sostituisci 127.0.0.1:8000 in nginx.conf con il reale indirizzo IP e porta HOST di myems-api
cd myems/myems-web
notepad nginx.conf
- Copia il codice sorgente nella directory root
cp -r myems/myems-web c:\
cd c:\myems-web
Puoi tranquillamente ignorare il comando 'npm run build' in questa sezione, perché è integrato nel Dockerfile
- Costruisci 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 sistema operativo su cui l'utente che invoca la build è in esecuzione. Puoi usare buildx e impostare il flag --platform per specificare la piattaforma di destinazione 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 contenitore Docker
Sull'host, monta nginx.conf come bind
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 Esegui contenitore in background e stampa ID contenitore
-
-p Pubblica porta(e) di un contenitore sull'host, 80:80 (Host:Contenitore) lega la porta 80 (destra) del contenitore alla porta TCP 80 (sinistra) della macchina host.
-
-v Se usi -v o --volume per montare come bind un file o directory che non esiste ancora sull'host Docker, -v crea l'endpoint per te. Viene sempre creata come directory. L'opzione ro, se presente, causa il montaggio del bind nel contenitore come sola lettura. Per versioni v4.7.0 o precedenti, usa '/code/.env' invece di '/app/.env'.
-
--log-opt max-size=2m La dimensione massima del log prima che venga ruotato. Un 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 intero positivo.
-
--restart Politica di riavvio da applicare quando un contenitore esce
-
--name Assegna un nome al contenitore
Se vuoi migrare l'immagine su un altro computer,
- Esporta immagine in file tarball
docker save --output myems-web.tar myems/myems-web
- Copia il file tarball su un altro computer, e poi carica l'immagine dal file tarball
docker load --input .\myems-web.tar
Post-installazione
Congratulazioni! Ora puoi accedere all'interfaccia utente Admin e Web di MyEMS.
Porte predefinite
Interfaccia utente web di MyEMS: 80
MyEMS API: 8000
Interfaccia utente Admin di MyEMS: 8001
Supponendo che l'indirizzo del server sia 192.168.1.8 (sostituisci con l'indirizzo effettivo del server) Accedi all'interfaccia utente web di MyEMS su http://192.168.1.8 (80 può essere omesso) Accedi all'interfaccia utente Admin di MyEMS su http://192.168.1.8:8001
Password predefinite
Interfaccia utente Admin di MyEMS
Username:
administrator
Password:
!MyEMS1
Interfaccia utente web di MyEMS
Username:
administrator@myems.io
Password:
!MyEMS1
Risoluzione dei problemi
A causa di problemi di rete ISP, potresti riscontrare lentezza nel pull delle immagini. Puoi usare servizi di accelerazione di terze parti.