MyEMS开源系统安装之Linux/macOS上的DOcker

简介: 本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。

在本指南中,您将在Linux/macOS上使用Docker部署MyEMS。

前提

  • 主机上已安装docker、npm。
  • 已安装MySQL服务器。
  • MySQL数据库可以从Docker Engine运行的主机连接。

    第1步 数据库

    参考https://blog.csdn.net/zgy5004/article/details/147955476?spm=1001.2014.3001.5501

    第2步 myems-api

    在本节中,您将在Docker上安装myems-api。
  • 将源代码复制到根目录
    cp -r myems/myems-api /
    
    cd /myems-api
    
  • 基于example.env文件创建.env
    警告
    用真实的主机IP地址手动替换127.00.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容器
    在主机上, 创建一个共享上传文件的文件夹:
mkdir /myems-upload

创建一个容器,将共享上传文件夹绑定到容器,并将.env绑定到容器:

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 在后台运行容器并打印容器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文件,请重新启动容器以使更改生效。

如果您想将镜像迁移到另一台计算机,

  • 将镜像导出到tar文件
docker save --output myems-api.tar myems/myems-api
  • 将tar文件复制到另一台计算机,然后从tar文件加载镜像
docker load --input .\myems-api.tar

第3步 myems-admin

在本节中,您将在Docker上安装myems-admin。

  • 将源代码复制到根目录
cp -r myems/myems-admin /
cd /myems-admin

警告
手动将nginx.conf中的127.00.1:8000替换为实际的主机IP地址和myems-api端口

nano nginx.conf
nano 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容器
  • 在主机上, 创建一个共享上传文件的文件夹:
mkdir /myems-upload

将共享上传文件夹绑定到容器,并将.env绑定到容器: 创建一个容器,绑定挂载共享上传文件文件夹到容器,并绑定挂载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 在后台运行容器并打印容器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 为容器指定名称
    如果您想将镜像迁移到另一台计算机,

  • 将镜像导出到tar文件

docker save --output myems-admin.tar myems/myems-admin
  • docker save --output myems-admin.tar myems/myems-admin
    docker load --input .\myems-admin.tar
    

    第4步 myems-modbus-tcp

    在本节中,您将在Docker上安装myems-modbus-tcp。
  • 将源代码复制到根目录
cp -r myems/myems-modbus-tcp /
cd /myems-modbus-tcp
  • 基于example.env文件创建.env
    警告
    用真实的主机IP地址手动替换127.00.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 /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容器

为了将容器迁移到另一台计算机,

  • 将镜像导出到tar文件
docker save --output myems-modbus-tcp.tar myems/myems-modbus-tcp
  • 将tar文件复制到另一台计算机,然后从tar文件加载镜像
docker load --input .\myems-modbus-tcp.tar

第5步 myems-cleaning

在本节中,您将在Docker上安装myems-cleaning。

  • 将源代码复制到根目录
cp -r myems/myems-cleaning /
cd /myems-cleaning
  • 基于example.env文件创建.env
    警告
    用真实的主机IP地址手动替换127.00.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 /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容器
    为了将容器迁移到另一台计算机,
  • 将镜像导出到tar文件
docker save --output myems-cleaning.tar myems/myems-cleaning
  • 将tar文件复制到另一台计算机,然后从tar文件加载镜像
docker load --input .\myems-cleaning.tar

第6步 myems-normalization

在本节中,您将在Docker上安装myems-normalization。

  • 将源代码复制到根目录
cp -r myems/myems-normalization /
cd /myems-normalization
  • 基于example.env文件创建.env
    警告
    用真实的主机IP地址手动替换127.00.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 /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容器
    为了将容器迁移到另一台计算机,

    -将镜像导出到tar文件

docker save --output myems-normalization.tar myems/myems-normalization
  • 将tar文件复制到另一台计算机,然后从tar文件加载镜像
docker load --input .\myems-normalization.tar

第7步 myems-aggregation

在本节中,您将在Docker上安装myems-aggregation。

  • 将源代码复制到根目录
cp -r myems/myems-aggregation /
cd /myems-aggregation
  • 基于example.env文件创建.env
cp example.env .env

警告
用真实的主机IP地址手动替换127.00.1

  • 用源代码编译镜像
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 /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容器

-将镜像导出到tar文件

docker save --output myems-aggregation.tar myems/myems-aggregation
  • 将tar文件复制到另一台计算机,然后从tar文件加载镜像
docker load --input .\myems-aggregation.tar

第8步 myems-web

在本节中,您将在Docker上安装myems-web。

  • 修改配置文件:

备注
https://mapbox.com 获取 mapboxToken 然后设置 showOnlineMap 为 true. 如果要关闭在线地图功能,设置 showOnlineMap 为 false

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

警告
将nginx.conf中的127.00.1:8000替换为实际的HOST IP和myems-api端口

cd myems/myems-web
nano nginx.conf
  • 将源代码复制到根目录
cp -r myems/myems-web /
cd /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 /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 为容器指定名称

如果您想将镜像迁移到另一台计算机,

  • 将镜像导出到tar文件
docker save --output myems-web.tar myems/myems-web
  • 将tar文件复制到另一台计算机,然后从tar文件加载镜像
docker load --input .\myems-web.tar

安装后

祝贺!您现在可以登录MyEMS Admin UI和Web UI。

默认端口

MyEMS Web UI: 80

MyEMS API: 8000

MyEMS Admin UI: 8001

默认密码

Admin UI Web UI
administrator administrator@myems.io
!MyEMS1 !MyEMS1
相关文章
|
2月前
|
安全 Linux iOS开发
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
376 53
Binary Ninja 5.1.8104 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
2月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
210 1
Metasploit Framework 6.4.95 (macOS, Linux, Windows) - 开源渗透测试框架
|
2月前
|
Linux API iOS开发
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
234 14
Binary Ninja 4.2.6455 (macOS, Linux, Windows) - 反编译器、反汇编器、调试器和二进制分析平台
|
2月前
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 macOS Unlocker & OEM BIOS 2.7 for Linux
VMware Workstation Pro 25H2 macOS Unlocker & OEM BIOS 2.7 for Linux
415 3
VMware Workstation Pro 25H2 macOS Unlocker & OEM BIOS 2.7 for Linux
|
2月前
|
Linux 虚拟化 iOS开发
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
528 0
VMware Remote Console 13.0.1 for macOS, Linux, Windows - vSphere 虚拟机控制台的桌面客户端
|
3月前
|
SQL Linux 调度
Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台
Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台
96 2
Timeplus Enterprise 3.0 (Linux, macOS) - 流处理平台
|
3月前
|
Linux 网络安全 iOS开发
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
420 1
Metasploit Framework 6.4.90 (macOS, Linux, Windows) - 开源渗透测试框架
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
505 5
|
2月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
385 2
|
2月前
|
Linux iOS开发 计算机视觉
GIMP 3.0.6 (Linux, macOS, Windows) 发布 - 免费开源图像编辑器
GIMP 3.0.6 (Linux, macOS, Windows) 发布 - 免费开源图像编辑器
236 0