跳到主要內容

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

故障排除

如何解決鏡像拉取超時問題

由於運營商網路問題,可能會導致您拉取鏡像變慢,可以使用第三方加速服務