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
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
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
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
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
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
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:
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
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
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
Z powodu problemów z siecią ISP, pobieranie obrazów może być powolne. Możesz skorzystać z usług akceleracji stron trzecich.