跳到主要內容

Linux上的Podman

在本指南中,您將在Linux上使用Podman部署MyEMS。

前提

  • 主機上已安裝podman、npm。
  • 已安裝MySQL伺服器。
  • MySQL資料庫可以從Podman Engine運行的主機連接。
警告
  • 建議使用root許可權來執行podman命令。
  • 安裝podman後,使用命令 systemctl status podman-restart.service 檢查容器是否配置為自動啟動和策略。如果顯示 Unit not found 表示容器無法自動啟動。

第1步 資料庫

參考 Database

第2步 myems-api

在本節中,您將在Podman上安裝myems-api。

  • 將源代碼複製到根目錄
cp -r myems/myems-api /
cd /myems-api
  • 基於example.env檔創建.env
警告

用真實的主機IP地址手動替換127.0.0.1

cp example.env .env
  • 用源代碼編譯鏡像
podman build -t myems/myems-api .

為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。

podman buildx build --platform=linux/amd64 -t myems/myems-api .
  • 運行Podman容器

在主機上, 創建一個共用上傳檔的檔夾:

mkdir /myems-upload

創建一個容器,將共用上傳檔夾綁定到容器,並將.env綁定到容器:

podman 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 在後臺運行容器並列印容器ID

  • -p 向主機發佈容器的端口,8000:8000(主機:容器)將容器的端口8000(右側)綁定到主機的TCP端口8000(左側)。

  • -v 如果使用-v或--volume綁定裝載Podman主機上尚不存在的檔或目錄,-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檔
podman save --output myems-api.tar myems/myems-api
  • 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
podman load --input .\myems-api.tar

第3步 myems-admin

在本節中,您將在Podman上安裝myems-admin。

  • 將源代碼複製到根目錄
cp -r myems/myems-admin /
cd /myems-admin
警告

手動將nginx.conf中的127.0.0.1:8000替換為實際的HOSTip和myems-api端口

nano nginx.conf
      proxy_pass http://127.0.0.1:8000/;
  • 用源代碼編譯鏡像
podman build -t myems/myems-admin .

如果為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。

podman buildx build --platform=linux/amd64 -t myems/myems-admin .
  • 運行Podman容器

在主機上, 創建一個共用上傳檔的檔夾:

mkdir /myems-upload

將共用上傳檔夾綁定到容器,並將.env綁定到容器: 創建一個容器,綁定掛載共用上傳檔檔夾到容器,並綁定掛載nginx.conf

podman 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 在後臺運行容器並列印容器ID

  • -p 將容器的端口發佈到主機,8001:8001(主機:容器)將容器的8001端口(右側)綁定到主機的TCP端口8001(左側)。

  • -v 如果使用-v或--volume綁定裝載Podman主機上尚不存在的檔或目錄, -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檔
podman save --output myems-admin.tar myems/myems-admin
  • 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
podman load --input .\myems-admin.tar

第4步 myems-modbus-tcp

在本節中,您將在Podman上安裝myems-modbus-tcp。

  • 將源代碼複製到根目錄
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • 基於example.env檔創建.env
警告

用真實的主機IP地址手動替換127.0.0.1

cp example.env .env
  • 用源代碼編譯鏡像
podman build -t myems/myems-modbus-tcp .

為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。

podman buildx build --platform=linux/amd64 -t myems/myems-modbus-tcp .
  • 運行Podman容器 (以超級用戶運行)
podman 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 在後臺運行容器並列印容器ID

  • -v 如果使用-v或--volume綁定裝載Podman主機上尚不存在的檔或目錄, -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檔,請重新啟動容器以使更改生效。

  • 遷移Podman容器

為了將容器遷移到另一臺電腦,

  • 將鏡像導出到tarball檔
podman save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
podman load --input .\myems-modbus-tcp.tar

第5步 myems-cleaning

在本節中,您將在Podman上安裝myems-cleaning。

  • 將源代碼複製到根目錄
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • 基於example.env檔創建.env
警告

用真實的主機IP地址手動替換127.0.0.1

cp example.env .env
  • 用源代碼編譯鏡像
podman build -t myems/myems-cleaning .

為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。

podman buildx build --platform=linux/amd64 -t myems/myems-cleaning .
  • 運行Podman容器 (以超級用戶運行)
podman 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 在後臺運行容器並列印容器ID

  • -v 如果使用-v或--volume綁定裝載Podman主機上尚不存在的檔或目錄, -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檔,請重新啟動容器以使更改生效。

  • 遷移Podman容器

為了將容器遷移到另一臺電腦,

  • 將鏡像導出到tarball檔
podman save --output myems-cleaning.tar myems/myems-cleaning
  • 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
podman load --input .\myems-cleaning.tar

第6步 myems-normalization

在本節中,您將在Podman上安裝myems-normalization。

  • 將源代碼複製到根目錄
cp -r myems/myems-normalization /
cd /myems-normalization
  • 基於example.env檔創建.env
警告

用真實的主機IP地址手動替換127.0.0.1

cp example.env .env
  • 用源代碼編譯鏡像
podman build -t myems/myems-normalization .

為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。

podman buildx build --platform=linux/amd64 -t myems/myems-normalization .
  • 運行Podman容器 (以超級用戶運行)
podman 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 在後臺運行容器並列印容器ID

  • -v 如果使用-v或--volume綁定裝載Podman主機上尚不存在的檔或目錄, -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檔,請重新啟動容器以使更改生效。

  • 遷移Podman容器

為了將容器遷移到另一臺電腦,

  • 將鏡像導出到tarball檔
podman save --output myems-normalization.tar myems/myems-normalization
  • 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
podman load --input .\myems-normalization.tar

第7步 myems-aggregation

在本節中,您將在Podman上安裝myems-aggregation。

  • 將源代碼複製到根目錄
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • 基於example.env檔創建.env
cp example.env .env
警告

用真實的主機IP地址手動替換127.0.0.1

  • 用源代碼編譯鏡像
podman build -t myems/myems-aggregation .

為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。

podman buildx build --platform=linux/amd64 -t myems/myems-aggregation .
  • 運行Podman容器 (以超級用戶運行)
podman 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 在後臺運行容器並列印容器ID

  • -v 如果使用-v或--volume綁定裝載Podman主機上尚不存在的檔或目錄, -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檔,請重新啟動容器以使更改生效。

  • 遷移Podman容器

  • 將鏡像導出到tarball檔

podman save --output myems-aggregation.tar myems/myems-aggregation
  • 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
podman load --input .\myems-aggregation.tar

第8步 myems-web

在本節中,您將在Podman上安裝myems-web。

  • 修改配置檔:
備註

https://mapbox.com 獲取 mapboxToken 然後設置 showOnlineMap 為 true. 如果要關閉線上地圖功能,設置 showOnlineMap 為 false

cd myems/myems-web
nano src/config.js
警告

將nginx.conf中的127.0.0.1:8000替換為真正的HOST IP和myems-api端口

cd myems/myems-web
nano nginx.conf
  • 將源代碼複製到根目錄
cp -r myems/myems-web /
cd /myems-web
資訊

您可以安全地忽略本節中的命令“npm run build”,因為它內置在Podmanfile中

  • 用源代碼編譯鏡像
podman build -t myems/myems-web .

為多個平臺構建,而不僅僅是為當前用戶運行的體系結構和操作系統構建。 您可以使用buildx並設置--platform標誌來指定構建輸出的目標平臺(例如,linux/amd64、linux/arm64或darwin/amd64)。

podman buildx build --platform=linux/amd64 -t myems/myems-web .
  • 運行Podman容器

在主機上,將nginx.conf綁定到容器

podman 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 在後臺運行容器並列印容器ID

  • -p 向主機發佈容器的端口,80:80(主機:容器)將容器的端口80(右)綁定到主機的TCP端口80(左)。

  • -v 如果使用-v或--volume綁定裝載Podman主機上尚不存在的檔或目錄, -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檔
podman save --output myems-web.tar myems/myems-web
  • 將tarball檔複製到另一臺電腦,然後從tarball檔加載鏡像
podman 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

故障排除