Vai al contenuto principale

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
Attenzione

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
Attenzione

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
Attenzione

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
Attenzione

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
Attenzione

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
Attenzione

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:
Nota

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
Attenzione

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
Informazioni

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

Come risolvere problemi di timeout pull immagine

A causa di problemi di rete ISP, potresti riscontrare lentezza nel pull delle immagini. Puoi usare servizi di accelerazione di terze parti.