Docker na Linux/macOS
W tym przewodniku wdrożysz MyEMS za pomocą Dockera na systemie Linux (lub macOS).
Wymagania wstępne
- Zainstalowany docker i npm na hoście.
- Zainstalowany serwer MySQL.
- Serwer MySQL musi być dostępny z hosta, na którym działa silnik Docker.
- Wymagania sprzętowe: Co najmniej 4GB RAM, 20GB miejsca na dysku (dla bazy danych i kontenerów 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 za pomocą Dockera.
- Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-api /
cd /myems-api
- Utw órz plik .env na podstawie pliku example.env
Ręcznie zamień 127.0.0.1 na rzeczywisty adres IP HOSTA.
cp example.env .env
- Zbuduj obraz z kodu źródłowego
docker build -t myems/myems-api .
Aby zbudować obraz dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym uruchamia się budowa, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowy (np. linux/amd64, linux/arm64 lub darwin/amd64):
docker buildx build --platform=linux/amd64 -t myems/myems-api .
- Uruchom kontener Docker
Na hoście utwórz współdzielony folder dla plików upload:
mkdir /myems-upload
Utwórz kontener, zamontuj współdzielony folder w kontenerze oraz zamontuj plik .env w trybie tylko do odczytu:
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 Uruchamia kontener w tle i wyświetla ID kontenera
-
-p Publikuje port(y) kontenera na hoście, 8000:8000 (Host:Kontener) mapuje port 8000 (prawa strona) kontenera na port TCP 8000 (lewa strona) maszyny hosta.
-
-v Jeśli użyjesz -v lub --volume do montowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v utworzy ten punkt końcowy za Ciebie (zawsze jako katalog). Opcja ro (jeśli jest obecna) powoduje zamontowanie punktu montowania w kontenerze w trybie tylko do odczytu. Dla wersji v4.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 utworzy nadmiarowe pliki, najstarszy plik zostanie usunięty. Dodatnia liczba całkowita.
-
--restart Polityka restartu stosowana po zamknięciu kontenera
-
--name Przypisuje nazwę kontenerowi
Bezwzględna ścieżka przed dwukrotnikiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Bezwzględna ścieżka po dwukrotnikiem dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr montowania, możesz później zmienić wartości konfiguracyjne. Jeśli zmienisz plik .env, restartuj kontener, aby zmiany zaczęły obowiązywać.
Jeśli chcesz przenieść obraz na inny komputer:
- Eksportuj obraz do pliku tar
docker save --output myems-api.tar myems/myems-api
- Skopiuj plik tar na inny komputer, a następnie załaduj obraz z pliku tar
docker load --input ./myems-api.tar
Krok 3 myems-admin
W tej sekcji zainstalujesz myems-admin za pomocą Dockera.
- Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-admin /
cd /myems-admin
Ręcznie zamień 127.0.0.1:8000 w pliku nginx.conf na rzeczywisty adres IP HOSTA i port myems-api
nano nginx.conf
proxy_pass http://127.0.0.1:8000/;
- Zbuduj obraz z kodu źródłowego
docker build -t myems/myems-admin .
Aby zbudować obraz dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym uruchamia się budowa, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowy (np. linux/amd64, linux/arm64 lub darwin/amd64):
docker buildx build --platform=linux/amd64 -t myems/myems-admin .
- Uruchom kontener Docker
Na hoście utwórz współdzielony folder dla plików upload:
mkdir /myems-upload
Utwórz kontener, zamontuj współdzielony folder dla plików upload oraz plik nginx.conf:
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 Uruchamia kontener w tle i wyświetla ID kontenera
-
-p Publikuje port(y) kontenera na hoście, 8001:8001 (Host:Kontener) mapuje port 8001 (prawa strona) kontenera na port TCP 8001 (lewa strona) maszyny hosta.
-
-v Jeśli użyjesz -v lub --volume do montowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v utworzy ten punkt końcowy za Ciebie (zawsze jako katalog). Opcja ro (jeśli jest obecna) powoduje zamontowanie punktu montowania w kontenerze w trybie tylko do odczytu. Dla wersji v4.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 utworzy nadmiarowe pliki, najstarszy plik zostanie usunięty. Dodatnia liczba całkowita.
-
--restart Polityka restartu stosowana po zamknięciu kontenera
-
--name Przypisuje nazwę kontenerowi
Jeśli chcesz przenieść obraz na inny komputer:
- Eksportuj obraz do pliku tar
docker save --output myems-admin.tar myems/myems-admin
- Skopiuj plik tar na inny komputer, a następnie załaduj obraz z pliku tar
docker load --input ./myems-admin.tar
Krok 4 myems-modbus-tcp
W tej sekcji zainstalujesz myems-modbus-tcp za pomocą Dockera.
- Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
- Utwórz plik .env na podstawie pliku example.env
Ręcznie zamień 127.0.0.1 na rzeczywisty adres IP HOSTA.
cp example.env .env
- Zbuduj obraz z kodu źródłowego
docker build -t myems/myems-modbus-tcp .
Aby zbudować obraz dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym uruchamia się budowa, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowy (np. linux/amd64, linux/arm64 lub darwin/amd64):
docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- Uruchom kontener Docker (jako superużytkownik)
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 Uruchamia kontener w tle i wyświetla ID kontenera
-
-v Jeśli użyjesz -v lub --volume do montowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v utworzy ten punkt końcowy za Ciebie (zawsze jako katalog). Opcja ro (jeśli jest obecna) powoduje zamontowanie punktu montowania w kontenerze w trybie tylko do odczytu. Dla wersji v4.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 utworzy nadmiarowe pliki, najstarszy plik zostanie usunięty. Dodatnia liczba całkowita.
-
--restart Polityka restartu stosowana po zamknięciu kontenera
-
--name Przypisuje nazwę kontenerowi
Bezwzględna ścieżka przed dwukrotnikiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Bezwzględna ścieżka po dwukrotnikiem dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr montowania, możesz później zmienić wartości konfiguracyjne. Jeśli zmienisz plik .env, restartuj kontener, aby zmiany zaczęły obowiązywać.
- Przeniesienie kontenera Docker
Aby przenieść kontener na inny komputer:
- Eksportuj obraz do pliku tar
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- Skopiuj plik tar na inny komputer, a następnie załaduj obraz z pliku tar
docker load --input ./myems-modbus-tcp.tar
Krok 5 myems-cleaning
W tej sekcji zainstalujesz myems-cleaning za pomocą Dockera.
- Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-cleaning /
cd /myems-cleaning
- Utwórz plik .env na podstawie pliku example.env
Ręcznie zamień 127.0.0.1 na rzeczywisty adres IP HOSTA.
cp example.env .env
- Zbuduj obraz z kodu źródłowego
docker build -t myems/myems-cleaning .
Aby zbudować obraz dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym uruchamia się budowa, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowy (np. linux/amd64, linux/arm64 lub darwin/amd64):
docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- Uruchom kontener Docker (jako superużytkownik)
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 Uruchamia kontener w tle i wyświetla ID kontenera
-
-v Jeśli użyjesz -v lub --volume do montowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v utworzy ten punkt końcowy za Ciebie (zawsze jako katalog). Opcja ro (jeśli jest obecna) powoduje zamontowanie punktu montowania w kontenerze w trybie tylko do odczytu. Dla wersji v4.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 utworzy nadmiarowe pliki, najstarszy plik zostanie usunięty. Dodatnia liczba całkowita.
-
--restart Polityka restartu stosowana po zamknięciu kontenera
-
--name Przypisuje nazwę kontenerowi
Bezwzględna ścieżka przed dwukrotnikiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Bezwzględna ścieżka po dwukrotnikiem dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr montowania, możesz później zmienić wartości konfiguracyjne. Jeśli zmienisz plik .env, restartuj kontener, aby zmiany zaczęły obowiązywać.
- Przeniesienie kontenera Docker
Aby przenieść kontener na inny komputer:
- Eksportuj obraz do pliku tar
docker save --output myems-cleaning.tar myems/myems-cleaning
- Skopiuj plik tar na inny komputer, a następnie załaduj obraz z pliku tar
docker load --input ./myems-cleaning.tar
Krok 6 myems-normalization
W tej sekcji zainstalujesz myems-normalization za pomocą Dockera.
- Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-normalization /
cd /myems-normalization
- Utwórz plik .env na podstawie pliku example.env
Ręcznie zamień 127.0.0.1 na rzeczywisty adres IP HOSTA.
cp example.env .env
- Zbuduj obraz z kodu źródłowego
docker build -t myems/myems-normalization .
Aby zbudować obraz dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym uruchamia się budowa, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowy (np. linux/amd64, linux/arm64 lub darwin/amd64):
docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
- Uruchom kontener Docker (jako superużytkownik)
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 Uruchamia kontener w tle i wyświetla ID kontenera
-
-v Jeśli użyjesz -v lub --volume do montowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v utworzy ten punkt końcowy za Ciebie (zawsze jako katalog). Opcja ro (jeśli jest obecna) powoduje zamontowanie punktu montowania w kontenerze w trybie tylko do odczytu. Dla wersji v4.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 utworzy nadmiarowe pliki, najstarszy plik zostanie usunięty. Dodatnia liczba całkowita.
-
--restart Polityka restartu stosowana po zamknięciu kontenera
-
--name Przypisuje nazwę kontenerowi
Bezwzględna ścieżka przed dwukrotnikiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Bezwzględna ścieżka po dwukrotnikiem dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr montowania, możesz później zmienić wartości konfiguracyjne. Jeśli zmienisz plik .env, restartuj kontener, aby zmiany zaczęły obowiązywać.
- Przeniesienie kontenera Docker
Aby przenieść kontener na inny komputer:
- Eksportuj obraz do pliku tar
docker save --output myems-normalization.tar myems/myems-normalization
- Skopiuj plik tar na inny komputer, a następnie załaduj obraz z pliku tar
docker load --input ./myems-normalization.tar
Krok 7 myems-aggregation
W tej sekcji zainstalujesz myems-aggregation za pomocą Dockera.
- Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-aggregation /
cd /myems-aggregation
- Utwórz plik .env na podstawie pliku example.env
cp example.env .env
Ręcznie zamień 127.0.0.1 na rzeczywisty adres IP HOSTA.
- Zbuduj obraz z kodu źródłowego
docker build -t myems/myems-aggregation .
Aby zbudować obraz dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym uruchamia się budowa, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowy (np. linux/amd64, linux/arm64 lub darwin/amd64):
docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
- Uruchom kontener Docker (jako superużytkownik)
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 Uruchamia kontener w tle i wyświetla ID kontenera
-
-v Jeśli użyjesz -v lub --volume do montowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v utworzy ten punkt końcowy za Ciebie (zawsze jako katalog). Opcja ro (jeśli jest obecna) powoduje zamontowanie punktu montowania w kontenerze w trybie tylko do odczytu. Dla wersji v4.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 utworzy nadmiarowe pliki, najstarszy plik zostanie usunięty. Dodatnia liczba całkowita.
-
--restart Polityka restartu stosowana po zamknięciu kontenera
-
--name Przypisuje nazwę kontenerowi
Bezwzględna ścieżka przed dwukrotnikiem dotyczy ścieżki na hoście i może się różnić w zależności od systemu. Bezwzględna ścieżka po dwukrotnikiem dotyczy ścieżki w kontenerze i NIE MOŻE zostać zmieniona. Przekazując .env jako parametr montowania, możesz później zmienić wartości konfiguracyjne. Jeśli zmienisz plik .env, restartuj kontener, aby zmiany zaczęły obowiązywać.
-
Przeniesienie kontenera Docker
-
Eksportuj obraz do pliku tar
docker save --output myems-aggregation.tar myems/myems-aggregation
- Skopiuj plik tar na inny komputer, a następnie załaduj obraz z pliku tar
docker load --input ./myems-aggregation.tar
Krok 8 myems-web
W tej sekcji zainstalujesz myems-web za pomocą Dockera.
- Modyfikuj plik config.js:
Pobierz mapboxToken na stronie 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
nano src/config.js
- Modyfikuj plik nginx.conf:
Zamień 127.0.0.1:8000 w pliku nginx.conf na rzeczywisty adres IP HOSTA i port myems-api.
cd myems/myems-web
nano nginx.conf
- Skopiuj kod źródłowy do katalogu głównego
cp -r myems/myems-web /
cd /myems-web
Możesz bezpiecznie zignorować polecenie 'npm run build' w tej sekcji, ponieważ jest ono uwzględnione w pliku Dockerfile.
- Zbuduj obraz z kodu źródłowego
docker build -t myems/myems-web .
docker image prune -f
Aby zbudować obraz dla wielu platform, a nie tylko dla architektury i systemu operacyjnego, na którym uruchamia się budowa, możesz użyć buildx i ustawić flagę --platform, aby określić docelową platformę dla wyniku budowy (np. linux/amd64, linux/arm64 lub darwin/amd64):
docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
- Uruchom kontener Docker
Na hoście zamontuj plik nginx.conf:
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 Uruchamia kontener w tle i wyświetla ID kontenera
-
-p Publikuje port(y) kontenera na hoście, 80:80 (Host:Kontener) mapuje port 80 (prawa strona) kontenera na port TCP 80 (lewa strona) maszyny hosta.
-
-v Jeśli użyjesz -v lub --volume do montowania pliku lub katalogu, który jeszcze nie istnieje na hoście Docker, -v utworzy ten punkt końcowy za Ciebie (zawsze jako katalog). Opcja ro (jeśli jest obecna) powoduje zamontowanie punktu montowania w kontenerze w trybie tylko do odczytu. Dla wersji v4.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 utworzy nadmiarowe pliki, najstarszy plik zostanie usunięty. Dodatnia liczba całkowita.
-
--restart Polityka restartu stosowana po zamknięciu kontenera
-
--name Przypisuje nazwę kontenerowi
Jeśli chcesz przenieść obraz na inny komputer:
- Eksportuj obraz do pliku tar
docker save --output myems-web.tar myems/myems-web
- Skopiuj plik tar na inny komputer, a następnie załaduj obraz z pliku tar
docker load --input ./myems-web.tar
Po instalacji
Gratulacje! Teraz możesz zalogować się do interfejsu administracyjnego MyEMS Admin UI oraz Web UI.
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 (zamień na rzeczywisty adres serwera): Dostęp do MyEMS Web UI pod adresem http://192.168.1.8 (port 80 można pominąć) 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ą dostawcy usług internetowych (ISP) możesz napotkać wolne pobieranie obrazów. Możesz użyć usług akceleracyjnych od trzecich stron.