本系列文章将为读者讲解关于MyEMS开源系统安装的知识,本篇因篇幅原因将分为上下两部分为读者介绍如何在Windows上使用Docker部署MyEMS。

前提

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

第1步 数据库

参考(https://myems.io/docs/installation/database

第2步 myems-api

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

  • 将源代码复制到根目录
cp -r myems/myems-api c:\
cd c:\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容器

在主机上,新建文件夹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.00.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.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 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

由于篇幅原因,剩下步骤将于(下)篇详细讲解。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐