Windows上的Docker
在本指南中,您將在Windows上使用Docker部署MyEMS。
前提
- 主機上已安裝docker、npm。
- 已安裝MySQL伺服器。
- MySQL資料庫可以從Docker Engine運行的主機連接。
- 硬體需求:至少 4GB RAM,20GB 存儲空間(資料庫和 Docker 容器)。
克隆源代碼:
cd ~
git clone https://gitee.com/myems/myems
第1步 資料庫
參考 Database
第2步 myems-api
在本節中,您將在Docker上安裝myems-api。
- 將源代碼複製到根目錄
cp -r myems/myems-api c:\
cd c:\myems-api
- 基於example.env檔創建.env
用真實的主機IP地址手動替換127.0.0.1。
cp example.env .env
- 用源代碼編譯鏡像
docker build -t myems/myems-api .
為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。
docker buildx build --platform=linux/amd64 -t myems/myems-api .
- 運行Docker容器
在主機上,新建檔夾c:\myems-upload, 將此檔夾綁定到容器,並將.env綁定到容器:
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 在後臺運行容器並列印容器ID
-
-p 向主機發佈容器的端口,8000:8000(主機:容器)將容器的端口8000(右側)綁定到主機的TCP端口8000(左側)。
-
-v 如果使用-v或--volume綁定裝載Docker主機上尚不存在的檔或目錄,-v將為您創建端點。它始終創建為目錄。 ro選項(如果存在)會導致綁定裝載以只讀方式裝載到容器中。 對於 v4.7.0 或更早的版本, 用 '/code/.env' 而不是 '/app/.env'。
-
--log-opt max-size=2m 滾動前日志的最大大小。正整數加上表示度量單位(k、m或g)的修飾符。
-
--log-opt max-file=2 可以存在的最大日誌檔數。如果滾動日誌會創建多餘的檔,則會刪除最舊的檔。正整數。
-
--restart 重新啟動策略以在容器退出時應用
-
--name 為容器指定名稱
冒號前的絕對路徑表示主機上的 路徑,可能因系統而異。 冒號後的絕對路徑用於容器上的路徑,不能更改。 通過將.env作為綁定裝載參數傳遞,您可以稍後更改配置值。 如果更改了.env檔,請重新啟動容器以使更改生效。
如果您想將鏡像遷移到另一臺電腦,
- 將鏡像導出到tarball檔
docker save --output myems-api.tar myems/myems-api
- 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
docker load --input .\myems-api.tar
第3步 myems-admin
在本節中,您將在Docker上安裝myems-admin。
- 將源代碼複製到根目錄
cp -r myems/myems-admin c:\
cd c:\myems-admin
手動將nginx.conf中的127.0.0.1:8000替換為實際的HOSTIP地址和myems-api端口
notepad nginx.conf
proxy_pass http://127.0.0.1:8000/;
- 用源代碼編譯鏡像
docker build -t myems/myems-admin .
為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。
docker buildx build --platform=linux/amd64 -t myems/myems-admin .
- 運行Docker容器
在主機上,新建檔夾c:\myems-upload, 將此檔夾綁定掛載到容器,並綁定掛載nginx.conf到容器:
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 在後臺運行容器並列印容器ID
-
-p 將容器的端口發佈到主機,8001:8001(主機:容器)將容器的8001端口(右側)綁定到主機的TCP端口8001(左側)。
-
-v 如果使用-v或--volume綁定裝載Docker主機上尚不存在的檔或目錄, -v為您創建端點。它始終創建為目錄。 ro選項(如果存在)會導致綁定裝載以只讀方式裝載到容器中。 對於 v4.7.0 或更早的版本, 用 '/code/.env' 而不是 '/app/.env'。
-
--log-opt max-size=2m 滾動前日志的最大大小。正整數加上表示度量單位(k、m或g)的修飾符。
-
--log-opt max-file=2 可以存在的最大日誌檔數。如果滾動日誌會創建多餘的檔,則會刪除最舊的檔。正整數。
-
--restart 重新啟動策略以在容器退出時應用
-
--name 為容器指定名稱
如果您想將鏡像遷移到另一臺電腦,
- 將鏡像導出到tarball檔
docker save --output myems-admin.tar myems/myems-admin
- 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
docker load --input .\myems-admin.tar
第4步 myems-modbus-tcp
在本節中,您將在Docker上安裝myems-modbus-tcp。
- 將源代碼複製到根目錄
cp -r myems/myems-modbus-tcp c:\
cd c:\myems-modbus-tcp
- 基於example.env檔創建.env
用真實的主機IP地址手動替換127.0.0.1。
cp example.env .env
- 用源代碼編譯鏡像
docker build -t myems/myems-modbus-tcp .
為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。
docker buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
- 運行Docker容器 (以管理員身份運行)
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 在後臺運行容器並列印容器ID
-
-v 如果使用-v或--volume綁定裝載Docker主機上尚不存在的檔或目錄, -v為您創建端點。它始終創建為目錄。 ro選項(如果存在)會導致綁定裝載以只讀方式裝載到容器中。 對於 v4.7.0 或更早的版本, 用 '/code/.env' 而不是 '/app/.env'。
-
--log-opt max-size=2m 滾動前日志的最大大小。正整數加上表示度量單位(k、m或g)的修飾符。
-
--log-opt max-file=2 可以存在的最大日誌檔數。如果滾動日誌會創建多餘的檔,則會刪除最舊的檔。正整數。
-
--restart 重新啟動策略以在容器退出時應用
-
--name 為容器指定名稱
冒號前的絕對路徑表示主機上的路徑,可能因系統而異。 冒號後的絕對路徑用於容器上的路徑,不能更改。 通過將.env作為綁定裝載參數傳遞,您可以稍後更改配置值。 如果更改了.env檔,請重新啟動容器以使更改生效。
- 遷移Docker容器
為了將容器遷移到另一臺電腦,
- 將鏡像導出到tarball檔
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
- 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
docker load --input .\myems-modbus-tcp.tar
第5步 myems-cleaning
在本節中,您將在Docker上安裝myems-cleaning。
- 將源代碼複製到根目錄
cp -r myems/myems-cleaning c:\
cd c:\myems-cleaning
- 基於example.env檔創建.env
用真實的主機IP地址手動替換127.0.0.1。
cp example.env .env
- 用源代碼編譯鏡像
docker build -t myems/myems-cleaning .
為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。
docker buildx build --platform=linux/amd64 -t myems/myems-cleaning .
- 運行Docker容器 (以管理員身份運行)
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 在後臺運行容器並列印容器ID
-
-v 如果使用-v或--volume綁定裝載Docker主機上尚不存在的檔或目錄, -v為您創建端點。它始終創建為目錄。 ro選項(如果存在)會導致綁定裝載以只讀方式裝載到容器中。 對於 v4.7.0 或更早的版本, 用 '/code/.env' 而不是 '/app/.env'。
-
--log-opt max-size=2m 滾動前日志的最大大小。正整數加上表示度量單位(k、m或g)的修飾符。
-
--log-opt max-file=2 可以存在的最大日誌檔數。如果滾動日誌會創建多餘的檔,則會刪除最舊的檔。正整數。
-
--restart 重新啟動策略以在容器退出時應用
-
--name 為容器指定名稱
冒號前的絕對路徑表示主機上的路徑,可能因系統而異。 冒號後的絕對路徑用於容器上的路徑,不能更改。 通過將.env作為綁定裝載參數傳遞,您可以稍後更改配置值。 如果更改了.env檔,請重新啟動容器以使更改生效。
- 遷移Docker容器
為了將容器遷移到另一臺電腦,
- 將鏡像導出到tarball檔
docker save --output myems-cleaning.tar myems/myems-cleaning
- 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
docker load --input .\myems-cleaning.tar
第6步 myems-normalization
在本節中,您將在Docker上安裝myems-normalization。
- 將源代碼複製到根目錄
cp -r myems/myems-normalization c:\
cd c:\myems-normalization
- 基於example.env檔創建.env
用真實的主機IP地址手動替換127.0.0.1。
cp example.env .env
- 用源代碼編譯鏡像
docker build -t myems/myems-normalization .
為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。
docker buildx build --platform=linux/amd64 -t myems/myems-normalization .
- 運行Docker容器 (以管理員身份運行)
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 在後臺運行容器並列印容器ID
-
-v 如果使用-v或--volume綁定裝載Docker主機上尚不存在的檔或目錄, -v為您創建端點。它始終創建為目錄。 ro選項(如果存在)會導致綁定裝載以只讀方式裝載到容器中。 對於 v4.7.0 或更早的版本, 用 '/code/.env' 而不是 '/app/.env'。
-
--log-opt max-size=2m 滾動前日志的最大大小。正整數加上表示度量單位(k、m或g)的修飾符。
-
--log-opt max-file=2 可以存在的最大日誌檔數。如果滾動日誌會創建多餘的檔,則會刪除最舊的檔。正整數。
-
--restart 重新啟動策略以在容器退出時應用
-
--name 為容器指定名稱
冒號前的絕對路徑表示主機上的路徑,可能因系統而異。 冒號後的絕對路徑用於容器上的路徑,不能更改。 通過將.env作為綁定裝載參數傳遞,您可以稍後更改配置值。 如果更改了.env檔,請重新啟動容器以使更改生效。
- 遷移Docker容器
為了將容器遷移到另一臺電腦,
- 將鏡像導出到tarball檔
docker save --output myems-normalization.tar myems/myems-normalization
- 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
docker load --input .\myems-normalization.tar
第7步 myems-aggregation
在本節中,您將在Docker上安裝myems-aggregation。
- 將源代碼複製到根目錄
cp -r myems/myems-aggregation c:\
cd c:\myems-aggregation
- 基於example.env檔創建.env
用真實的主機IP地址手動替換127.0.0.1。
cp example.env .env
- 用源代碼編譯鏡像
docker build -t myems/myems-aggregation .
為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。
docker buildx build --platform=linux/amd64 -t myems/myems-aggregation .
- 運行Docker容器 (以管理員身份運行)
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 在後臺運行容器並列印容器ID
-
-v 如果使用-v或--volume綁定裝載Docker主機上尚不存在的檔或目錄, -v為您創建端點。它始終創建為目錄。 ro選項(如果存在)會導致綁定裝載以只讀方式裝載到容器中。 對於 v4.7.0 或更早的版本, 用 '/code/.env' 而不是 '/app/.env'。
-
--log-opt max-size=2m 滾動前日志的最大大小。正整數加上表示度量單位(k、m或g)的修飾符。
-
--log-opt max-file=2 可以存在的最大日誌檔數。如果滾動日誌會創建多餘的檔,則會刪除最舊的檔。正整數。
-
--restart 重新啟動策略以在容器退出時應用
-
--name 為容器指定名稱
冒號前的絕對路徑表示主機上的路徑,可能因系統而異。 冒號後的絕對路徑用於容器上的路徑,不能更改。 通過將.env作為綁定裝載參數傳遞,您可以稍後更改配置值。 如果更改了.env檔,請重新啟動容器以使更改生效。
-
遷移Docker容器
-
將鏡像導出到tarball檔
docker save --output myems-aggregation.tar myems/myems-aggregation
- 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
docker load --input .\myems-aggregation.tar
第8步 myems-web
在本節中,您將在Docker上安裝myems-web。
修改配置檔:
從 https://mapbox.com 獲取 mapboxToken 然後設置 showOnlineMap 為 true. 如果要關閉線上地圖功能,設置 showOnlineMap 為 false
cd myems/myems-web
notepad src/config.js
將nginx.conf中的127.0.0.1:8000替換為實際的HOST IP和myems-api端口
cd myems/myems-web
notepad nginx.conf
- 將源代碼複製到根目錄
cp -r myems/myems-web c:\
cd c:\myems-web
您可以安全地忽略本節中的命令“npm run build”,因為它內置在Dockerfile中
- 用源代碼編譯鏡像
docker build -t myems/myems-web .
docker image prune -f
為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。
docker buildx build --platform=linux/amd64 -t myems/myems-web .
docker image prune -f
- 運行Docker容器
在主機上,將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 在後臺運行容器並列印容器ID
-
-p 向主機發佈容器的端口,80:80(主機:容器)將容器的端口80(右)綁定到主 機的TCP端口80(左)。
-
-v 如果使用-v或--volume綁定裝載Docker主機上尚不存在的檔或目錄, -v為您創建端點。它始終創建為目錄。 ro選項(如果存在)會導致綁定裝載以只讀方式裝載到容器中。 對於 v4.7.0 或更早的版本, 用 '/code/.env' 而不是 '/app/.env'。
-
--log-opt max-size=2m 滾動前日志的最大大小。正整數加上表示度量單位(k、m或g)的修飾符。
-
--log-opt max-file=2 可以存在的最大日誌檔數。如果滾動日誌會創建多餘的檔,則會刪除最舊的檔。正整數。
-
--restart 重新啟動策略以在容器退出時應用
-
--name 為容器指定名稱
如果您想將鏡像遷移到另一臺電腦,
- 將鏡像導出到tarball檔
docker save --output myems-web.tar myems/myems-web
- 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
docker load --input .\myems-web.tar
安裝後
祝賀!您現在可以登錄MyEMS Admin UI和Web UI。
默認端口
MyEMS Web UI: 80
MyEMS API: 8000
MyEMS Admin UI: 8001
假設伺服器地址是 192.168.1.8 (替換為伺服器真實地址) 訪問MyEMS Web UI地址是 http://192.168.1.8 (80可以忽略) 訪問MyEMS Admin UI地址是 http://192.168.1.8:8001
默認密碼
MyEMS Admin UI
用戶名:
administrator
密碼:
!MyEMS1
MyEMS Web UI
用戶名:
administrator@myems.io
密碼:
!MyEMS1
故障排除
由於運營商網路問題,可能會導致您拉取鏡像變慢,可以使用第三方加速服務