Przejdź do głównej zawartości

Docker na Windows

W tym przewodniku wdrożysz MyEMS za pomocą Dockera na Windows.

Wymagania wstępne

  • Zainstalowany docker, npm na hoście.
  • Zainstalowany serwer MySQL.
  • Do bazy danych MySQL można się połączyć z hosta, na którym działa silnik Docker.
  • Wymagania sprzętowe: co najmniej 4 GB RAM, 20 GB miejsca na dysku (baza danych i kontener Docker).

Sklonuj kod źródłowy:

cd ~
git clone https://github.com/myems/myems

Krok 1 Baza danych

Zobacz Baza danych

Krok 2 myems-api

W tej sekcji zainstalujesz myems-api na Dockerze.

  • Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-api c:\
cd c:\myems-api
  • Utwórz plik .env na podstawie pliku example.env
Ostrzeżenie

Ręcznie zastąp 127.0.0.1 prawdziwym adresem IP HOSTA.

cp example.env .env
  • Zbuduj obraz ze źródła kodu
docker build -t myems/myems-api .

Aby zbudować dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym aktualnie działa użytkownik, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowania (na przykład linux/amd64, linux/arm64 lub darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-api .
  • Uruchom kontener Dockera

Na hoście utwórz folder w c:\myems-upload i zamontuj go do kontenera, a także zamontuj plik .env do kontenera:

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 Uruchom kontener w tle i wypisz ID kontenera.

  • -p Opublikuj port(y) kontenera na hoście, 8000:8000 (Host:Kontener) wiąże port 8000 (po prawej) kontenera z portem TCP 8000 (po lewej) maszyny hosta.

  • -v Jeśli użyjesz -v lub --volume do zamontowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v tworzy dla ciebie punkt końcowy. Zawsze jest tworzony jako katalog. Opcja ro, jeśli jest obecna, powoduje, że zamontowany wolumin jest montowany w kontenerze jako tylko do odczytu. Dla wersji 4.7.0 lub wcześniejszych użyj '/code/.env' zamiast '/app/.env'.

  • --log-opt max-size=2m Maksymalny rozmiar logu przed jego rotacją. Dodatnia liczba całkowita plus modyfikator reprezentujący jednostkę miary (k, m lub g).

  • --log-opt max-file=2 Maksymalna liczba plików logów, które mogą istnieć. Jeśli rotacja logów tworzy nadmiarowe pliki, najstarszy plik jest usuwany. Dodatnia liczba całkowita.

  • --restart Polityka restartowania do zastosowania, gdy kontener zakończy działanie.

  • --name Przypisz nazwę kontenerowi.

Ścieżka absolutna przed dwukropkiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Ścieżka absolutna po dwukropku dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr bind-mount, możesz później zmienić wartości konfiguracyjne. Jeśli zmieniłeś plik .env, zrestartuj kontener, aby zmiana zaczęła obowiązywać.

Jeśli chcesz przenieść obraz na inny komputer,

  • Eksportuj obraz do pliku tarball
docker save --output myems-api.tar myems/myems-api
  • Skopiuj plik tarball na inny komputer, a następnie załaduj obraz z pliku tarball
docker load --input .\myems-api.tar

Krok 3 myems-admin

W tej sekcji zainstalujesz myems-admin na Dockerze.

  • Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-admin c:\
cd c:\myems-admin
Ostrzeżenie

Ręcznie zastąp 127.0.0.1:8000 w nginx.conf rzeczywistym adresem IP HOSTA i portem myems-api.

notepad nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • Zbuduj obraz ze źródła kodu
docker build -t myems/myems-admin .

Aby zbudować dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym aktualnie działa użytkownik, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowania (na przykład linux/amd64, linux/arm64 lub darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-admin .
  • Uruchom kontener Dockera

Na hoście utwórz folder w c:\myems-upload i zamontuj go do kontenera, a także zamontuj plik nginx.conf do kontenera: Parametr -v dla folderu upload musi być taki sam jak w 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 Uruchom kontener w tle i wypisz ID kontenera.

  • -p Opublikuj port(y) kontenera na hoście, 8001:8001 (Host:Kontener) wiąże port 8001 (po prawej) kontenera z portem TCP 8001 (po lewej) maszyny hosta.

  • -v Jeśli użyjesz -v lub --volume do zamontowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v tworzy dla ciebie punkt końcowy. Zawsze jest tworzony jako katalog. Opcja ro, jeśli jest obecna, powoduje, że zamontowany wolumin jest montowany w kontenerze jako tylko do odczytu. Dla wersji 4.7.0 lub wcześniejszych użyj '/code/.env' zamiast '/app/.env'.

  • --log-opt max-size=2m Maksymalny rozmiar logu przed jego rotacją. Dodatnia liczba całkowita plus modyfikator reprezentujący jednostkę miary (k, m lub g).

  • --log-opt max-file=2 Maksymalna liczba plików logów, które mogą istnieć. Jeśli rotacja logów tworzy nadmiarowe pliki, najstarszy plik jest usuwany. Dodatnia liczba całkowita.

  • --restart Polityka restartowania do zastosowania, gdy kontener zakończy działanie.

  • --name Przypisz nazwę kontenerowi.

Jeśli chcesz przenieść obraz na inny komputer,

  • Eksportuj obraz do pliku tarball
docker save --output myems-admin.tar myems/myems-admin
  • Skopiuj plik tarball na inny komputer, a następnie załaduj obraz z pliku tarball
docker load --input .\myems-admin.tar

Krok 4 myems-modbus-tcp

W tej sekcji zainstalujesz myems-modbus-tcp na Dockerze.

  • Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-modbus-tcp c:\
cd c:\myems-modbus-tcp
  • Utwórz plik .env na podstawie pliku example.env
Ostrzeżenie

Ręcznie zastąp 127.0.0.1 prawdziwym adresem IP HOSTA.

cp example.env .env
  • Zbuduj obraz ze źródła kodu
docker build -t myems/myems-modbus-tcp .

Aby zbudować dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym aktualnie działa użytkownik, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowania (na przykład linux/amd64, linux/arm64 lub darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • Uruchom kontener Dockera (Uruchom jako Administrator)
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 Uruchom kontener w tle i wypisz ID kontenera.

  • -v Jeśli użyjesz -v lub --volume do zamontowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v tworzy dla ciebie punkt końcowy. Zawsze jest tworzony jako katalog. Opcja ro, jeśli jest obecna, powoduje, że zamontowany wolumin jest montowany w kontenerze jako tylko do odczytu. Dla wersji 4.7.0 lub wcześniejszych użyj '/code/.env' zamiast '/app/.env'.

  • --log-opt max-size=2m Maksymalny rozmiar logu przed jego rotacją. Dodatnia liczba całkowita plus modyfikator reprezentujący jednostkę miary (k, m lub g).

  • --log-opt max-file=2 Maksymalna liczba plików logów, które mogą istnieć. Jeśli rotacja logów tworzy nadmiarowe pliki, najstarszy plik jest usuwany. Dodatnia liczba całkowita.

  • --restart Polityka restartowania do zastosowania, gdy kontener zakończy działanie.

  • --name Przypisz nazwę kontenerowi.

Ścieżka absolutna przed dwukropkiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Ścieżka absolutna po dwukropku dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr bind-mount, możesz później zmienić wartości konfiguracyjne. Jeśli zmieniłeś plik .env, zrestartuj kontener, aby zmiana zaczęła obowiązywać.

  • Przenieś kontener Dockera

Aby przenieść kontener na inny komputer,

  • Eksportuj obraz do pliku tarball
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • Skopiuj plik tarball na inny komputer, a następnie załaduj obraz z pliku tarball
docker load --input .\myems-modbus-tcp.tar

Krok 5 myems-cleaning

W tej sekcji zainstalujesz myems-cleaning na Dockerze.

  • Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
  • Utwórz plik .env na podstawie pliku example.env
Ostrzeżenie

Ręcznie zastąp 127.0.0.1 prawdziwym adresem IP HOSTA.

cp example.env .env
  • Zbuduj obraz ze źródła kodu
docker build -t myems/myems-cleaning .

Aby zbudować dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym aktualnie działa użytkownik, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowania (na przykład linux/amd64, linux/arm64 lub darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • Uruchom kontener Dockera (Uruchom jako Administrator)
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 Uruchom kontener w tle i wypisz ID kontenera.

  • -v Jeśli użyjesz -v lub --volume do zamontowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v tworzy dla ciebie punkt końcowy. Zawsze jest tworzony jako katalog. Opcja ro, jeśli jest obecna, powoduje, że zamontowany wolumin jest montowany w kontenerze jako tylko do odczytu. Dla wersji 4.7.0 lub wcześniejszych użyj '/code/.env' zamiast '/app/.env'.

  • --log-opt max-size=2m Maksymalny rozmiar logu przed jego rotacją. Dodatnia liczba całkowita plus modyfikator reprezentujący jednostkę miary (k, m lub g).

  • --log-opt max-file=2 Maksymalna liczba plików logów, które mogą istnieć. Jeśli rotacja logów tworzy nadmiarowe pliki, najstarszy plik jest usuwany. Dodatnia liczba całkowita.

  • --restart Polityka restartowania do zastosowania, gdy kontener zakończy działanie.

  • --name Przypisz nazwę kontenerowi.

Ścieżka absolutna przed dwukropkiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Ścieżka absolutna po dwukropku dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr bind-mount, możesz później zmienić wartości konfiguracyjne. Jeśli zmieniłeś plik .env, zrestartuj kontener, aby zmiana zaczęła obowiązywać.

  • Przenieś kontener Dockera

Aby przenieść kontener na inny komputer,

  • Eksportuj obraz do pliku tarball
docker save --output myems-cleaning.tar myems/myems-cleaning
  • Skopiuj plik tarball na inny komputer, a następnie załaduj obraz z pliku tarball
docker load --input .\myems-cleaning.tar

Krok 6 myems-normalization

W tej sekcji zainstalujesz myems-normalization na Dockerze.

  • Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-normalization c:\
cd c:\myems-normalization
  • Utwórz plik .env na podstawie pliku example.env
Ostrzeżenie

Ręcznie zastąp 127.0.0.1 prawdziwym adresem IP HOSTA.

cp example.env .env
  • Zbuduj obraz ze źródła kodu
docker build -t myems/myems-normalization .

Aby zbudować dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym aktualnie działa użytkownik, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowania (na przykład linux/amd64, linux/arm64 lub darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • Uruchom kontener Dockera (Uruchom jako Administrator)
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 Uruchom kontener w tle i wypisz ID kontenera.

  • -v Jeśli użyjesz -v lub --volume do zamontowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v tworzy dla ciebie punkt końcowy. Zawsze jest tworzony jako katalog. Opcja ro, jeśli jest obecna, powoduje, że zamontowany wolumin jest montowany w kontenerze jako tylko do odczytu. Dla wersji 4.7.0 lub wcześniejszych użyj '/code/.env' zamiast '/app/.env'.

  • --log-opt max-size=2m Maksymalny rozmiar logu przed jego rotacją. Dodatnia liczba całkowita plus modyfikator reprezentujący jednostkę miary (k, m lub g).

  • --log-opt max-file=2 Maksymalna liczba plików logów, które mogą istnieć. Jeśli rotacja logów tworzy nadmiarowe pliki, najstarszy plik jest usuwany. Dodatnia liczba całkowita.

  • --restart Polityka restartowania do zastosowania, gdy kontener zakończy działanie.

  • --name Przypisz nazwę kontenerowi.

Ścieżka absolutna przed dwukropkiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Ścieżka absolutna po dwukropku dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr bind-mount, możesz później zmienić wartości konfiguracyjne. Jeśli zmieniłeś plik .env, zrestartuj kontener, aby zmiana zaczęła obowiązywać.

  • Przenieś kontener Dockera

Aby przenieść kontener na inny komputer,

  • Eksportuj obraz do pliku tarball
docker save --output myems-normalization.tar myems/myems-normalization
  • Skopiuj plik tarball na inny komputer, a następnie załaduj obraz z pliku tarball
docker load --input .\myems-normalization.tar

Krok 7 myems-aggregation

W tej sekcji zainstalujesz myems-aggregation na Dockerze.

  • Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-aggregation c:\
cd c:\myems-aggregation
  • Utwórz plik .env na podstawie pliku example.env
Ostrzeżenie

Ręcznie zastąp 127.0.0.1 prawdziwym adresem IP HOSTA.

cp example.env .env
  • Zbuduj obraz ze źródła kodu
docker build -t myems/myems-aggregation .

Aby zbudować dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym aktualnie działa użytkownik, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowania (na przykład linux/amd64, linux/arm64 lub darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • Uruchom kontener Dockera (Uruchom jako Administrator)
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 Uruchom kontener w tle i wypisz ID kontenera.

  • -v Jeśli użyjesz -v lub --volume do zamontowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v tworzy dla ciebie punkt końcowy. Zawsze jest tworzony jako katalog. Opcja ro, jeśli jest obecna, powoduje, że zamontowany wolumin jest montowany w kontenerze jako tylko do odczytu. Dla wersji 4.7.0 lub wcześniejszych użyj '/code/.env' zamiast '/app/.env'.

  • --log-opt max-size=2m Maksymalny rozmiar logu przed jego rotacją. Dodatnia liczba całkowita plus modyfikator reprezentujący jednostkę miary (k, m lub g).

  • --log-opt max-file=2 Maksymalna liczba plików logów, które mogą istnieć. Jeśli rotacja logów tworzy nadmiarowe pliki, najstarszy plik jest usuwany. Dodatnia liczba całkowita.

  • --restart Polityka restartowania do zastosowania, gdy kontener zakończy działanie.

  • --name Przypisz nazwę kontenerowi.

Ścieżka absolutna przed dwukropkiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Ścieżka absolutna po dwukropku dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr bind-mount, możesz później zmienić wartości konfiguracyjne. Jeśli zmieniłeś plik .env, zrestartuj kontener, aby zmiana zaczęła obowiązywać.

  • Przenieś kontener Dockera

  • Eksportuj obraz do pliku tarball

docker save --output myems-aggregation.tar myems/myems-aggregation
  • Skopiuj plik tarball na inny komputer, a następnie załaduj obraz z pliku tarball
docker load --input .\myems-aggregation.tar

Krok 8 myems-web

W tej sekcji zainstalujesz myems-web na Dockerze.

  • Zmodyfikuj plik config.js:
Uwaga

Uzyskaj mapboxToken na https://mapbox.com, a następnie ustaw showOnlineMap na true. Jeśli chcesz wyłączyć funkcję mapy online, ustaw showOnlineMap na false.

cd myems/myems-web
notepad src/config.js
Ostrzeżenie

Zastąp 127.0.0.1:8000 w nginx.conf prawdziwym adresem IP HOSTA i portem myems-api.

cd myems/myems-web
notepad nginx.conf
  • Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-web c:\
cd c:\myems-web
Informacje

Możesz bezpiecznie zignorować polecenie 'npm run build' w tej sekcji, ponieważ jest ono zintegrowane z Dockerfile.

  • Zbuduj obraz ze źródła kodu
docker build -t myems/myems-web .
docker image prune -f

Aby zbudować dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym aktualnie działa użytkownik, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowania (na przykład linux/amd64, linux/arm64 lub darwin/amd64).

docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
  • Uruchom kontener Dockera

Na hoście, zamontuj nginx.conf

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 Uruchom kontener w tle i wypisz ID kontenera.

  • -p Opublikuj port(y) kontenera na hoście, 80:80 (Host:Kontener) wiąże port 80 (po prawej) kontenera z portem TCP 80 (po lewej) maszyny hosta.

  • -v Jeśli użyjesz -v lub --volume do zamontowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v tworzy dla ciebie punkt końcowy. Zawsze jest tworzony jako katalog. Opcja ro, jeśli jest obecna, powoduje, że zamontowany wolumin jest montowany w kontenerze jako tylko do odczytu. Dla wersji 4.7.0 lub wcześniejszych użyj '/code/.env' zamiast '/app/.env'.

  • --log-opt max-size=2m Maksymalny rozmiar logu przed jego rotacją. Dodatnia liczba całkowita plus modyfikator reprezentujący jednostkę miary (k, m lub g).

  • --log-opt max-file=2 Maksymalna liczba plików logów, które mogą istnieć. Jeśli rotacja logów tworzy nadmiarowe pliki, najstarszy plik jest usuwany. Dodatnia liczba całkowita.

  • --restart Polityka restartowania do zastosowania, gdy kontener zakończy działanie.

  • --name Przypisz nazwę kontenerowi.

Jeśli chcesz przenieść obraz na inny komputer,

  • Eksportuj obraz do pliku tarball
docker save --output myems-web.tar myems/myems-web
  • Skopiuj plik tarball na inny komputer, a następnie załaduj obraz z pliku tarball
docker load --input .\myems-web.tar

Po instalacji

Gratulacje! Możesz teraz zalogować się do interfejsu administratora MyEMS i interfejsu użytkownika Web.

Domyślne porty

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

Zakładając, że adres serwera to 192.168.1.8 (zastąp rzeczywistym adresem serwera) Uzyskaj dostęp do MyEMS Web UI pod adresem http://192.168.1.8 (80 można pominąć) Uzyskaj dostęp do MyEMS Admin UI pod adresem http://192.168.1.8:8001

Domyślne hasła

MyEMS Admin UI

Nazwa użytkownika:

administrator

Hasło:

!MyEMS1

MyEMS Web UI

Nazwa użytkownika:

administrator@myems.io

Hasło:

!MyEMS1

Rozwiązywanie problemów

Jak rozwiązać problemy z timeout pobierania obrazów

Z powodu problemów z siecią ISP, pobieranie obrazów może być powolne. Możesz skorzystać z usług akceleracji stron trzecich.